20165 月24
Node.js:集成apidoc
本文基于Sails.js MVC框架
一、安装
npm i apidoc -save npm i grunt-apidoc -save
二、配置
package.json
增加配置项
"apidoc": { "title": "Sunshop" },
tasks/config/apidoc.js
/** * Created by wizzer on 2016/5/24. */ module.exports = function (grunt) { grunt.config.set('apidoc', { myapp: { src: "api/controllers/api", dest: "apidoc/", options: { includeFilters: [ ".*\\.json$" ] } } }); grunt.loadNpmTasks('grunt-apidoc'); };
tasks/register/compileAssets.js
module.exports = function (grunt) { grunt.registerTask('compileAssets', [ 'clean:dev', 'jst:dev', 'less:dev', 'copy:dev', 'coffee:dev', 'apidoc:myapp' // <-- apidoc ]); };
api/controllers/api/oauth.json 一个API文档示例,详细参数见apidoc官网。
/** * @api {POST} /api/oauth/token Token * @apiName Token * @apiGroup Oauth * @apiVersion 1.0.0 * @apiDescription 获取Token * @apiPermission anyone * * @apiParam {string} client_id client_id * @apiParam {string} client_secret client_secret * * @apiParamExample {json} 示例 * POST /api/oauth/token * { * "client_id": "client_id", * "client_secret": "client_secret" * } * * @apiSuccess (成功) {number} code 0 * @apiSuccess (成功) {string} msg success * @apiSuccess (成功) {Object} data Token对象 * @apiSuccess (成功) {string} data.token Token * @apiSuccess (成功) {number} data.expires 失效时间(24小时)请保存若失效重新获取 * @apiSuccess (成功) {number} data.appid AppId * @apiSuccessExample {json} 示例 * HTTP/1.1 200 OK * { * "code": 0, * "msg": "success", * "data": { * "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOjIsImV4cCI6MTQ2NDE1NjA2OTg3Nn0.4i_o7gCjCKvOImSi4peCMgCUrzpdgbtmvMECKf5wkqE", * "expires": 1464156069876, * "appid": 2 * } * } * * @apiError (失败) {number} code 1:client_id不存在 2:client_id禁用 3:client_secret错误 4:参数错误 * @apiError (失败) {string} msg 错误文字描述 * @apiErrorExample {json} 示例 * HTTP/1.1 200 OK * { * "code": 1 * "msg": "client_id has error" * } */
框架配置静态目录,让其可访问:
config/http.js
customMiddleware: function (app) { app.use('/apidoc', require('express')['static'](require('path').normalize(__dirname + '/../apidoc'))); },