当我构建我的swagger.json文件时,我不知道要使用哪个主机。但是,当我托管swaggerui的页面加载时,我可以解决它(实际上我可能想为用户提供一个选择)。我希望在swaggerUI对象的配置上看到一个options.host - 我没看到一个。有没有现成的方法,我无法找到或做我只需要破解我的方式通过代码并添加此功能(指向最好的地方,这将是受欢迎的)
这是我的工作,因为加载的文档只是一个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
}
这样,您就不会使用开发环境配置污染API规范。
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"
]
}
要么
"host": "test.mydomain.com:3000",
"schemes": [
"https"
],
或者,您可以通过定义var并调用主机名或计算机名称或其他环境变量来拥有动态主机。
if (typeof this.host === 'undefined' || this.host === '') {
this.host = location.host;
}
if (location.port) {
this.host = this.host + ':' + location.port;
}
在最新版本的Swagger UI中,可以执行此操作,例如在onComplete中:
window.swaggerUi.api.setHost("your.host:4242");
两种方式
一个修改swagger.js,以便它接受主机选项。 swagger-UI将选项传递给swagger-js以便工作。我用这个修复程序向swagger-js提交了一个拉动
第二个选择是swagger-UI接受'spec'参数。这意味着托管页面可以加载swagger.json文件,JSON.parse它,在其中设置'host'然后传递给swaggerUi构造函数。这对调用者来说更难,但不需要代码更改来招摇
如果您在同一个应用服务器上托管它,只需从json中删除主机密钥,并在密钥“basePath”中提供相对路径。 as - “basePath”:“/ rest / createcampaign”。
这就是我使用Java客户端执行此操作的方法:
DefaultApi api = new DefaultApi();
api.getApiClient().setBasePath("http://localhost:8080");
//call the API
如果您使用OpenApi 3.0
变量可以具有任意值,也可以限制为枚举。在任何情况下,都需要一个默认值,如果客户端不提供值,将使用该值。
在swagger-ui中将有默认值但字段是输入字段,因此可以在运行时自定义它。
您可以通过以下两种方式进行操作:
const ui = SwaggerUIBundle({
spec: location.host,
url: "swagger.json",
dom_id: "#swagger-ui",
deepLinking: true,
presets: [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset],
plugins: [SwaggerUIBundle.plugins.DownloadUrl],
layout: "StandaloneLayout"
});
// End Swagger UI call region
window.ui = ui;
};
"host":""
或省略主机参数。
Swagger将服务器的主机作为托管swagger ui的主机。