基础URL可以在Swagger中更改吗?

时间:2014-09-11 21:06:54

标签: api-design swagger swagger-ui

我目前已经实现了Swagger,并且我注意到资源的基本URL是在JSON资源文件中硬编码的,理想情况下我想让用户能够更改不同json语言的基本URL。因此,例如,让他们能够在同一页面上提交来自一个环境的get和来自另一个环境的put,因为我正在使用多个环境,否则他们必须在每个环境中更改JSON他们每次想要使用新环境时的资源。有谁知道这是否可行?

2 个答案:

答案 0 :(得分:3)

这是可能的,我通过以下方式实现:

在swaggerui中,我通过javascript获取网址以编程方式声明我的网址:

  // Get the url:
  theUrl = window.location.protocol+"//" + window.location.host+"/docs";

  window.swaggerUi = new SwaggerUi({
  url: theUrl,..other parameters...})

在我的json文件中,我声明了一个资源,我只是将我的basepath声明为" /"如下图所示:

{
  "apiVersion": "1.0.0",
  "swaggerVersion": "1.2",
  "basePath": "/",
  "resourcePath": "/api/myapi".......

希望有所帮助!

答案 1 :(得分:1)

动态更改目标服务器(发送REST请求的位置)的主机名(并覆盖JSON文件中的值):

$.each(window.swaggerUi.api.apis, function(key, val) {
  window.swaggerUi.api.apis[key].basePath = "http://target:port";
});