【发布时间】:2018-05-19 09:41:53
【问题描述】:
我创建了 Ngnix-Consul Docker 设置,引用 https://github.com/nginxinc/NGINX-Demos/tree/master/consul-template-demo。
并创建了许多微服务。因此,只有在添加服务名称后才能访问所有微服务,例如
http://example.com/service_name/get_data
一切正常,然后我想为所有微服务添加招摇,所以尝试使用下面的 sn-p 我可以使用 swagger ui 访问
http://example.com/service_name/ui
但问题是我无法在该 ui 中加载 swagger.json,因为它试图访问以下 url 上的 swagger.json
http://example.com/swagger.json
但是json文件在
http://example.com/service_name/swagger.json
如何更改 swagger.json 的默认路径?
微服务中的应用程序是在 python-flask 中创建的 我在sn-p下面试过了
swagger: "2.0"
info:
description: "Add service"
version: "1.0.0"
title: "Add Service"
contact:
email: "abc@efg.com"
license:
name: "s1.0"
url: "http://sample.com"
host: "abc.efg.com"
tags:
- name: "add service"
description: "service"
- name: "delete service"
description: "data"
schemes:
- "http"
paths:
/service_name/get_data:
甚至我也尝试在 swagger.yaml 文件中添加 basePath 然后它甚至没有打开swaggerui
swagger: "2.0"
info:
description: "Add service"
version: "1.0.0"
title: "Add Service"
contact:
email: "abc@efg.com"
license:
name: "s1.0"
url: "http://sample.com"
host: "abc.efg.com"
basePath: "service_name"
tags:
- name: "add service"
description: "service"
- name: "delete service"
description: "data"
schemes:
- "http"
paths:
/get_data:
更新:
from flask import Flask
import connexion
app = Flask(__name__)
app = connexion.App(__name__)
app.add_api('swagger.yaml')
//apis
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8090, debug=True)
【问题讨论】:
-
你为 swagger ui 使用了哪个 python 包?你是怎么设置的?
-
请检查我更新的问题。 connexion 是包
-
试试
app.add_api('swagger.yaml', base_path='service_name') -
我曾尝试在 swagger.yml 中使用 basePath。有了这个其余服务正在工作,但没有 swagger.json 和 ui
-
不在 yaml 中,而是在 add_api 调用中
标签: nginx swagger swagger-ui swagger-2.0 consul