我正试图为现有的Flask应用生成Swagger文档,最初尝试使用
我有点困惑该选择哪个软件包满足我的需求。 我正在寻找解决方案,我们不想为API手动创建Swagger文档,而是希望使用软件包自动生成。
Flask-RESTPlus
,发现该项目已不再维护,并转到了分支项目flask-restx
https://github.com/python-restx/flask-restx,但我仍然认为它们不支持OpenAPI 3.0。我有点困惑该选择哪个软件包满足我的需求。 我正在寻找解决方案,我们不想为API手动创建Swagger文档,而是希望使用软件包自动生成。
import os
import requests
import json, yaml
from flask import Flask, after_this_request, send_file, safe_join, abort
from flask_restx import Resource, Api, fields
from flask_restx.api import Swagger
app = Flask(__name__)
api = Api(app=app, doc='/docs', version='1.0.0-oas3', title='TEST APP API',
description='TEST APP API')
response_fields = api.model('Resource', {
'value': fields.String(required=True, min_length=1, max_length=200, description='Book title')
})
@api.route('/compiler/', endpoint='compiler')
# @api.doc(params={'id': 'An ID'})
@api.doc(responses={403: 'Not Authorized'})
@api.doc(responses={402: 'Not Authorized'})
# @api.doc(responses={200: 'Not Authorized'})
class DemoList(Resource):
@api.expect(response_fields, validate=True)
@api.marshal_with(response_fields, code=200)
def post(self):
"""
returns a list of conferences
"""
api.payload["value"] = 'Im the response ur waiting for'
return api.payload
@api.route('/swagger')
class HelloWorld(Resource):
def get(self):
data = json.loads(json.dumps(api.__schema__))
with open('yamldoc.yml', 'w') as yamlf:
yaml.dump(data, yamlf, allow_unicode=True, default_flow_style=False)
file = os.path.abspath(os.getcwd())
try:
@after_this_request
def remove_file(resp):
try:
os.remove(safe_join(file, 'yamldoc.yml'))
except Exception as error:
log.error("Error removing or closing downloaded file handle", error)
return resp
return send_file(safe_join(file, 'yamldoc.yml'), as_attachment=True, attachment_filename='yamldoc.yml', mimetype='application/x-yaml')
except FileExistsError:
abort(404)
# main driver function
if __name__ == '__main__':
app.run(port=5003, debug=True)
以上代码是我尝试使用不同的包组合而成的,它可以生成Swagger 2.0文档,但我正在尝试生成OpenAPI 3.0的文档。
有人能否推荐一个支持以OpenAPI 3.0方式生成Swagger YAML或JSON的好包?