扬帆起航 JS

Posted

技术标签:

【中文标题】扬帆起航 JS【英文标题】:Swagger Sails JS 【发布时间】:2015-08-20 16:15:24 【问题描述】:

知道如何将 swagger、swagger-ui 与 sails js 项目集成吗?

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

谢谢!

【问题讨论】:

太好了,让我看看你的项目。谢谢! Strongloop 开箱即用 【参考方案1】:

在自动生成文档方面,您可以查看这个库,因为我认为它可以更好地解决问题,并且只需从您的控制器和路由自动生成 swagger.json 文件。

npm install sails-hook-swagger-generator --save

然后只需 sails lift 并检查 swagger 文件夹,您必须在运行 sails lift 之前创建该文件夹

更新

它现在支持 OAS 3.0 以及更好的操作和操作文档

更多配置可以查看repohere

【讨论】:

虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。 如何集成 swagger ui 以在浏览器中的某个路径上查看该 json? 哦,你可以通过这个swagger.io/docs/swagger-tools/#download-33并使用生成的JSON作为@Pavan的url路径 顺便说一句,Theo 是链接帆钩的作者。 @TheophilusOmoregbee 我在哪里可以看到招摇?当我起床时ip_address:1337/docs。我什么都没做【参考方案2】:

安装:npm i @logisticinfotech/sails-hook-actions2-swagger 并在浏览器中打开http://localhost:1337/swagger

仅此而已,很酷。

【讨论】:

【参考方案3】:

一个多星期前,我正在寻找解决方案,但我发现信息有点分散。这是我将 swagger 和 swagger-ui 与我的sails 0.11.x 项目集成的方法。

1。安装sails-swagger

npm install --save sails-swagger

这提供了一个钩子,可以动态生成 swagger 文档。不幸的是,它只与sails 0.12.x(在本文发布时是一个rc)兼容。因此,要使其与 0.11.x 一起使用,您必须扩展 SwaggerController 并覆盖 config/installedHooks.js (issue reference) 中的钩子名称

api/controllers/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
  
);

config/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'
  
;

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

配置/swagger.js

'use strict';

module.exports.swagger = 
  /**
   * require() the package.json file for your Sails app.
   */
  pkg: require('../package')
;

2。安装 swagger-ui

npm install --save-dev swagger-ui@2

有几种方法可以处理这个问题。您可以使用 vanilla swagger-ui 模块并将其 dist 中的所有内容添加到您的构建过程中。但是我选择将它复制到我的项目中,因为我打算对界面进行一些自定义。

mkdir assets/docs
cp -r node_modules/swagger-ui/dist/* assets/docs/

注意(2017 年 3 月 26 日):swagger-ui v3.x 已使用 React 重新构建(耶!),但目前尚不明显将其与 Sails 集成。

3。配置swagger-ui

最后,您需要将 swagger-ui 指向您动态生成的 swagger 文档。 swagger doc 的默认路由是/swagger/doc,所以你可以在 swagger-ui 配置中显式设置。

assets/docs/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>

4。利润

现在您可以在浏览器中导航到 /docs 并查看您精美的文档。

【讨论】:

@Vanuan:如果不使用默认设置,您可以禁用blueprints.js 中的默认设置。这也将从 swagger doc 中删除所有内容 如果您安装了 --no-frontend 选项,这将不起作用 node_modules/swagger-ui/dist/ 不再包含 index.html。只有 4 个文件。 @jankigadhiya 感谢您的提醒!我添加了一条注释以将 swagger-ui 安装限制为 2.x。 如果您的项目是使用 --no-frontend 选项生成的,那么您必须将 node_modules/swagger-ui/dist/ 复制到 .tmp/public/docs(例如使用 grunt 任务)【参考方案4】:

安装

$ 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路由上找到文档输出。

【讨论】:

【参考方案5】:

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

【讨论】:

也许只是更多信息 - 最简单的方法是下载 zip 并将 /dist 文件夹内容放在您希望 swagger ui 存在的任何位置。之后,您唯一需要更改的是 url -sails-swagger 包在“/swagger/doc”处生成 swagger 文件。之后效果很好。

以上是关于扬帆起航 JS的主要内容,如果未能解决你的问题,请参考以下文章

扬帆起航

信创产业专题:突破核心技术,信创扬帆起航(2021)

信创产业专题:突破核心技术,信创扬帆起航(2021)

信创产业专题:突破核心技术,信创扬帆起航(2021)

共码未来 | 多维助力企业扬帆起航,制胜海外

共码未来 | 多维助力企业扬帆起航,制胜海外