我想使用swagger-ui dist'原样'......几乎就是这样。
从github(2.0.24)下载最新版本并将其粘贴在我的应用程序的文件夹中。然后我用express表示静态服务它:
app.use('/swagger', express.static('./node_modules/swagger-ui/dist'));
我去的时候按预期工作:
https://mydomain.com/swagger
但是我想动态地将url字段填充到我的swagger json中。 IE我可以部署到不同的域:
https://mydomain.com/api-docs
https://otherdomain.com/api-docs
当我访问时:
https://mydomain.com/swagger
https://otherdomain.com/swagger
我想动态设置网址。
这可能吗?
答案 0 :(得分:2)
假设/ api-docs(或swagger.json)始终位于同一路径上,且只有域发生更改,您可以将SwaggerUi对象的url
参数设置为"/path/to/api-docs"
或{ {1}}而不是完整的网址。这将使UI加载该路径相对于托管UI的域。
作为参考,我也将保留原始答案,因为在某些情况下它可能会有用。
您可以使用"/path/to/swagger.json"
参数设置用户界面应加载的网址。
也就是说,如果您在url
下托管,则可以使用https://mydomain.com/swagger
和https://mydomain.com/swagger?url=https://mydomain.com/api-docs
指向不同的位置。
但是,据我所知,此功能仅适用于当前的alpha版本(应该足够稳定),而不适用于您使用的2.0.24(尽管值得测试)。
答案 1 :(得分:0)
另一种方法是使用位于swagger工具中的swagger-ui中间件。
let swaggerUi = require('../node_modules/swagger-tools/middleware/swagger-ui');
app.use(swaggerUi(config.swagger));
变量config.swagger
包含swagger.yaml
或swagger.json
。我有我的设置
let config = {
appRoot: __dirname,
swagger: require('./api/swagger/swagger.js')
};
注意:我使用的是require('swagger-express-mw')
模块
答案 2 :(得分:0)
你可以在swagger-ui的index.html文件中尝试这个...它对我有用。
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = window.location.origin + "/path/to/swagger.json";
}