gpt4 book ai didi

python - Flask_restplus 没有生成正确的 Swagger UI

转载 作者:行者123 更新时间:2023-12-01 01:13:34 26 4
gpt4 key购买 nike

好的,我在 PyCharm 中有一个具有以下结构的项目:

enter image description here

test_ns.py内容如下:

from flask_restplus import Api
from flask_restplus import Resource
from flask_restplus import reqparse

api = Api(version='1.0', title='My Blog API',
description='A simple demonstration of a Flask RestPlus powered API')

ns = api.namespace('blog/posts', description='Operations related to blog posts')

parser = reqparse.RequestParser()
parser.add_argument('Hello', required=True, location='form')


@ns.route('/')
class PostsCollection(Resource):

@api.expect(parser)
def get(self):
"""
Returns list of blog posts.
"""

return "Hello World from Swagger"

server.py内容如下:

from web.test_ns import ns, api
from flask import Flask, Blueprint

app = Flask(__name__)


def configure_app(flask_app):
flask_app.config['SWAGGER_UI_DOC_EXPANSION'] = 'List'
flask_app.config['RESTPLUS_VALIDATE'] = True
flask_app.config['RESTPLUS_MASK_SWAGGER'] = False


def initialize_app(flask_app):
configure_app(flask_app)

blueprint = Blueprint('api', __name__, url_prefix='/api')

api.init_app(blueprint)
api.add_namespace(ns)

flask_app.register_blueprint(blueprint)


def main():
initialize_app(app)
app.run(host="127.0.0.1", port="5000")


if __name__ == '__main__':
main()

问题是我没有得到合适的 Swagger UI。当我运行 server.py 并在浏览器中访问它时,我得到的是:

enter image description here

它基本上不是我想要的实际 Swagger-UI。

我想要的是 flask_restplus site 上广告的内容:

enter image description here

我就是不明白我做错了什么。

我浏览了 GitHub 上的一个项目 over here但我不明白我在做什么不同或不正确的事情。该项目使用与我相同的 Swagger 包,但我无法获得正确的输出。我哪里出错了?

运行GitHub项目的说明可以找到here .

我的项目和 GitHub 项目之间的唯一区别是后者只是使用了更多模块。

查看 Flask 的服务器日志,我可以看到 GitHub 项目对后端进行了更多调用以生成 UI:

enter image description here

虽然对我来说,我只进行少量调用来生成不正确的 Swagger UI:

* Serving Flask app "server" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [08/Feb/2019 23:37:00] "GET / HTTP/1.1" 404 -
127.0.0.1 - - [08/Feb/2019 23:37:04] "GET /api/ HTTP/1.1" 200 -
127.0.0.1 - - [08/Feb/2019 23:37:04] "GET /swaggerui/favicon-16x16.png HTTP/1.1" 200 -
127.0.0.1 - - [08/Feb/2019 23:37:04] "GET /api/swagger.json HTTP/1.1" 200 -

造成差异的原因是什么?

我搜索了文档,但找不到任何内容。我错过了什么?

甚至使用 flask_restplus site 中的示例无法提供正确的 Swagger UI,如广告所示。

GitHub 项目有何神奇之处,为什么它是唯一有效的项目?它在做什么正确的事情,而我显然没有这样做。

最佳答案

这两个图像都是 Swagger UI,只是不同版本。

  • Swagger UI v.3 中的第一个图像(您得到的内容),这是当前版本的 UI。您可以在官方 Swagger UI 演示中看到它:https://pestore.swagger.io .

  • 第二张图片(来自flask_restplus的文档)是Swagger UI v 2,这是一个不再开发/支持的旧版本。

flask_restplus 通过保持其依赖项(包括 Swagger UI)最新来按预期工作。问题在于 Flask_restplus 的文档,因为它包含过时的 Swagger UI 屏幕截图,与用户实际获得的不同。考虑向flask_restplus项目提交文档更新请求。

关于python - Flask_restplus 没有生成正确的 Swagger UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54598260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com