Swagger Sails JS

wch*_*ite 16 swagger sails.js swagger-ui

任何关于如何将swagger,swagger-ui与sails js项目集成的想法?

我在哪里可以找到有关它的信息,或者关于用帆来评论api的另一种方式?

谢谢!

gro*_*cky 31

一个多星期前我正在寻找解决方案,但我发现信息有点散乱.这就是我如何将swagger和swagger-ui与我的风帆0.11.x项目结合起来.

1.安装sails-swagger

npm install --save sails-swagger
Run Code Online (Sandbox Code Playgroud)

这提供了一个动态生成swagger文档的钩子.不幸的是,它仅与帆0.12.x兼容(这是本文发布时的rc).因此,要使它与0.11.x一起工作,你必须扩展SwaggerController并覆盖config/installedHooks.js中的钩子名称(问题参考)

API /控制器/ SwaggerController.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
  }
});
Run Code Online (Sandbox Code Playgroud)

配置/ installedHooks.js

'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'
  }
};
Run Code Online (Sandbox Code Playgroud)

最后,根据文档提供钩子的配置

配置/ swagger.js

'use strict';

module.exports.swagger = {
  /**
   * require() the package.json file for your Sails app.
   */
  pkg: require('../package')
};
Run Code Online (Sandbox Code Playgroud)

2.安装swagger-ui

npm install --save-dev swagger-ui@2
Run Code Online (Sandbox Code Playgroud)

有几种方法可以解决这个问题.您可以使用vanilla swagger-ui模块并将其中的所有内容添加dist到构建过程中.但我选择将其复制到我的项目中,因为我打算稍微自定义界面.

mkdir assets/docs
cp -r node_modules/swagger-ui/dist/* assets/docs/
Run Code Online (Sandbox Code Playgroud)

注意(2017年3月26日):swagger-ui v3.x已经使用React重新构建(yay!),但很容易将其与风帆集成在一起并不明显.

3.配置swagger-ui

最后,您需要将swagger-ui指向动态生成的swagger文档.swagger doc的默认路由是/swagger/doc,因此您可以在swagger-ui配置中明确设置它.

资产/文档/ index.html的

<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>
Run Code Online (Sandbox Code Playgroud)

4.利润

现在,您可以/docs在浏览器中导航并查看漂亮的文档.

帆,招摇的UI

  • 如果您的项目是使用* - no-frontend*选项生成的,那么您必须将`node_modules/swagger-ui/dist /`复制到`.tmp/public/docs`(例如使用grunt任务) (2认同)

wch*_*ite 4

我找到了使用swagger-ui的解决方案。我在asset sails 文件夹中创建一个名为docs的文件夹,将swagger-ui内容放入其中,然后编辑swagger.json文件。然后,我升起了帆。该文档现已在http://ip_address:1337/docs中提供。我正在使用 sails v- 0.11.0