简体   繁体   English

Swagger-UI 中未显示返回值

[英]Return values are not shown in Swagger-UI

I have created a very simple demo to demonstrate that the return values are not shown in swagger-ui:我创建了一个非常简单的演示来演示返回值未显示在 swagger-ui 中:

Requirements.txt需求.txt

flask-apispec
flask-marshmallow
flask-restful

Versions:版本:

apispec==3.3.0
Flask==1.1.1
flask-apispec==0.8.6
flask-marshmallow==0.11.0
Flask-RESTful==0.3.8
marshmallow==3.5.0
webargs==5.5.3

Code:代码:

from apispec import APISpec
from apispec.ext.marshmallow import MarshmallowPlugin
from flask import Flask
from flask_apispec import use_kwargs, marshal_with, FlaskApiSpec, MethodResource
from flask_marshmallow import Marshmallow
from flask_restful import Api
from marshmallow import fields

app = Flask(__name__)
api = Api(app)
ma = Marshmallow(app)


class Todo:
    def __init__(self, todo_id, description):
        self.todo_id = todo_id
        self.description = description

    def __getitem__(self, item):
        return getattr(self, item)


class TodoInputSchema(ma.Schema):
    token = fields.Str()


class TodoSchema(ma.Schema):
    class Meta:
        fields = ("todo_id", "description")


class Demo(MethodResource):
    def __init__(self):
        super(Demo, self).__init__()

    @use_kwargs(TodoInputSchema)
    @marshal_with(TodoSchema, code=200)
    def get(self):
        schema = TodoSchema()
        todo = Todo(1, "get Milk")
        return schema.dump(todo)


api.add_resource(Demo, '/')
app.config.update({
    'APISPEC_SPEC': APISpec(
        title='todo',
        version='v1',
        plugins=[MarshmallowPlugin()],
        openapi_version='3.0.2'
    ),
    'APISPEC_SWAGGER_URL': '/swagger/',
})
docs = FlaskApiSpec(app)

docs.register(Demo)

if __name__ == '__main__':
    app.run(debug=True, port=3333)

Run: http://127.0.0.1:3333/swagger-ui运行: http : //127.0.0.1 : 3333/swagger-ui

Why is the return object not shown in Swagger UI?为什么 Swagger UI 中没有显示返回对象?

在此处输入图片说明

Just change openapi version to 2.0.0.只需将 openapi 版本更改为 2.0.0。 It works for me这个对我有用

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM