扬帆起航 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的主要内容,如果未能解决你的问题,请参考以下文章