如何在sails js项目中集成 swagger 和 swagger-ui?
我可以在哪里找到相关信息,或者其他方式来注释使用sails生成的api?
谢谢!
如何在sails js项目中集成 swagger 和 swagger-ui?
我可以在哪里找到相关信息,或者其他方式来注释使用sails生成的api?
谢谢!
大约一周前,我在寻找解决方案时发现相关信息有些分散。以下是我如何将swagger和swagger-ui集成到我的sails 0.11.x项目中:
npm install --save sails-swagger
这个提供了一个钩子,将动态生成Swagger文档。不幸的是,它只兼容Sails 0.12.x(在发布此帖时是rc版本)。因此,要使其与0.11.x正常工作,您必须扩展SwaggerController并在config / installedHooks.js中覆盖钩子的名称 (问题引用)
'use strict';
/**
* This is a temp fix while one sails 11.x
* @see https://github.com/tjwebb/sails-swagger/issues/3
*/
var _ = require('lodash');
var _super = require('sails-swagger/dist/api/controllers/SwaggerController');
_.merge(exports, _super);
_.merge(exports, {
_config: {
actions: false,
shortcuts: false,
rest: false
}
});
'use strict';
/**
* This is a temp fix while one sails 11.x
* @see https://github.com/tjwebb/sails-swagger/issues/3
*/
module.exports.installedHooks = {
'sails-swagger': {
'name': 'swagger'
}
};
最后,请按照文档提供钩子的配置。
'use strict';
module.exports.swagger = {
/**
* require() the package.json file for your Sails app.
*/
pkg: require('../package')
};
npm install --save-dev swagger-ui@2
有几种方法来处理这个问题。你可以使用原始的swagger-ui模块并将其dist
中的所有内容添加到你的构建过程中。但是我选择将它复制到我的项目中,因为我打算对界面进行一些自定义。
mkdir assets/docs
cp -r node_modules/swagger-ui/dist/* assets/docs/
注意(2017年3月26日):Swagger-UI v3.x已经使用React进行了重建(耶!),但是目前很难与Sails轻松集成。
最后,您需要将Swagger-UI指向您动态生成的Swagger文档。Swagger文档的默认路由为/swagger/doc
,因此您可以在Swagger-UI配置中明确设置它。
<script type="text/javascript">
$(function () {
var url = '/swagger/doc';
// Pre load translate...
if(window.SwaggerTranslator) {
window.SwaggerTranslator.translate();
}
window.swaggerUi = new SwaggerUi({
url: url,
// ...removed for brevity
</script>
现在你可以在浏览器中导航到/docs
,并查看你美丽的文档。
blueprints.js
中禁用它们。这将从 Swagger 文档中删除所有内容。 - Mandeep Singh--no-frontend
选项来生成项目,那么你需要将 node_modules/swagger-ui/dist/
目录复制到 .tmp/public/docs
(例如通过 grunt 任务). - Alexeyassets
sails文件夹中创建了一个名为docs的文件夹,将swagger-ui内容放在其中,并编辑了swagger.json文件。然后,我执行了sails lift命令。现在可以通过http://ip_address:1337/docs访问文档。我正在使用sails v-0.11.0版本。在自动生成文档方面,您可以查看此库,我认为它更好地解决了问题,并从控制器和路由自动生成swagger.json文件。
npm install sails-hook-swagger-generator --save
如果你已经在运行sails lift
之前创建了swagger
文件夹,那么只需简单地运行sails lift
并检查swagger文件夹即可。
现在该工具支持OAS 3.0版本,并且还为操作和action2s提供了更好的文档。
如需了解更多有关配置的信息,请查看这个仓库。
安装
$ npm install sails-swagger --save
配置
// config/swagger.js
module.exports.swagger = {
/**
* require() the package.json file for your Sails app.
*/
pkg: require('../package'),
ui: {
url: 'http://swagger.balderdash.io'
}
};
安装和配置Swagger后,您可以在/swagger/doc
路由上找到文档输出。
npm i @logisticinfotech/sails-hook-actions2-swagger
,然后在浏览器中打开http://localhost:1337/swagger
。