告诉swaggerui主持人的最佳方式

pm1*_*100 16 swagger-ui

当我构建我的swagger.json文件时,我不知道要使用哪个主机.但是,当我托管swaggerui的页面加载时,我可以解决它(实际上我可能想为用户提供一个选择).我希望在swaggerUI对象的配置上看到一个options.host - 我没看到一个.有没有现成的方法,我无法找到或做我只需要破解我的方式通过代码并添加此功能(指向最好的地方,这将是受欢迎的)

小智 6

Swagger有一个内置的json定义用于主机配置,或者可以接受多个输入.

{
    "swagger": "2.0",
    "info": {
        "title": "Why API",
        "description": "Don't make that mistake again",
        "version": "0.0.1"
    },

    "host": "127.0.0.1:3000",
    "schemes": [
        "https"
    ]
}
Run Code Online (Sandbox Code Playgroud)

要么

"host": "test.mydomain.com:3000",
"schemes": [
    "https"
],
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过定义var并调用主机名或计算机名称或其他环境变量来拥有动态主机.

动态的例子

if (typeof this.host === 'undefined' || this.host === '') {
  this.host = location.host;
}
if (location.port) {
  this.host = this.host + ':' + location.port;
}
Run Code Online (Sandbox Code Playgroud)


Chr*_*son 5

这是我的工作,因为加载的文档只是一个JSON对象:

var swaggerDoc = require('./api/swagger.json');
if (process.env.NODE_ENV === 'development') {
  swaggerDoc.host="localhost:" + process.env.PORT
}

// Initialize the Swagger middleware
swaggerTools.initializeMiddleware(swaggerDoc, function (middleware) {
  // Other initialization
}
Run Code Online (Sandbox Code Playgroud)

这样,您就不会污染开发环境配置的API规范。


小智 5

如果您将其托管在同一应用程序服务器上,只需从 json 中删除主机密钥并在密钥“basePath”中提供相对路径。as - “basePath”:“/rest/createcampaign”。


pm1*_*100 3

两种方式

一种是修改 swagger.js,使其接受主机选项。swagger-UI 将选项传递给 swagger-js 以便工作。我通过此修复向 swagger-js 提交了拉取

第二个选择是 swagger-UI 接受“spec”参数。这意味着托管页面可以加载 swagger.json 文件,对其进行 JSON.parse ,在其中设置“host”,然后传递给 swaggerUi 构造函数。这对于调用者来说比较困难,但不需要对 swagger 进行代码更改

  • 如果人们想要监控 @pm100 拉取请求的状态,它位于 https://github.com/swagger-api/swagger-js/pull/510#issuecomment-121776076 (2认同)
  • 您有使用“spec”参数的示例吗? (2认同)