flask+swagger

由于写完flask接口后,需要向前端提供swagger接口文档,因此需要自动生成swagger文档。

1. 安装flask-restplus

采用如下命令安装flask-restplus

pip install flask-restplus==0.13.0

安装完成后导入包时报错,这是因为新版的werkzeug中该模块导入发生了变化,需要手动修改下

cannot import name 'cached_property'

/usr/local/lib/python3.7/site-packages/werkzeug/__init__.py 文件中,添加:

from werkzeug.utils import cached_property

2. 使用教程

from flask import Flask
from flask_restplus import Resource, Api, fields
import json
from flask_cors import CORS


app = Flask(__name__)
CORS(app, supports_credentials=True)

# swagger文档标题
api = Api(app, version='1.0', title='???',
          description='???')
app.config.update(RESTFUL_JSON=dict(ensure_ascii=False))

# 配置不同模块的命名空间
edi_risk = api.namespace('aRisk', path='/')

# 参数解析
parser = api.parser()

# 配置post方法需要传递的接口输入参数
a_input = api.model('a_input', {
    'input_text': fields.String(required=False, description='待查询的文本')
})
# 配置返回参数
a_risk_result = api.model('a_risk_result', {
    'risk': fields.Float(description='综合风险'),
})

# 继承参数,子
child = api.model('child_risk_source', {
     'is_risk_source': fields.Boolean(
         required=True, description='', default=False
     ),
     'risk_source_info': fields.String(
         required=True, description='',
         default='预警'
     )
})
# 继承参数,父
parent = api.model('parent', {'risk_source': fields.Nested(child)})

@a_risk.expect(parser)
class aRisk(Resource):
    # 配置输入参数说明
    @a_risk.doc(body=a_input)
    # 配置返回参数说明
    @a_risk.marshal_with(a_risk_result)
    def get(self, request):
        """
        swagger测试用例-1
        """
        results = {'SuccessFlag': True, 'Data': '输入文本成功!'}
        receive_params = request.get_data(as_text=True)
        receive_params = receive_params.replace("\\\\", "\\")
        post_value = json.loads(receive_params,
                                encoding="utf-8")
        input_text = post_value['input_text']
        return results, 200

    @a_risk.doc(body=a_input)
    @a_risk.marshal_with(a_risk_result)
    def post(self, request):
        """
        swagger测试用例-2
        """
        results = {'SuccessFlag': True, 'Data': '输入文本成功!'}
        receive_params = request.get_data(as_text=True)
        receive_params = receive_params.replace("\\\\", "\\")
        post_value = json.loads(receive_params,
                                encoding="utf-8")
        input_text = post_value['input_text']
        return results, 200

# 配置各命名空间下的接口
a_risk.add_resource(aRisk, '/aRisk/')


if __name__ == '__main__':
    app.run(host="0.0.0.0", port="8000", debug=True)

3. WSGI启动

启动时提示:

WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.

部署时应当采用WSGI启动,添加如下代码

from gevent import pywsgi

def query_api_wsgi():
    """
    部署的WSGI启动模式
    """
    server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
    server.serve_forever()
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask Restful Swagger是一种用于构建RESTful API和自动生成API文档的工具。 Flask是一个轻量级的Python Web框架,提供了构建Web应用程序所需的基本功能。而Flask RestfulFlask的扩展,它使得构建RESTful API更加简单和高效。 Swagger是一种用于描述和可视化RESTful API的工具,它使用JSON或YAML格式定义API的接口和参数,并生成交互式的API文档。 使用Flask Restful Swagger,我们可以在Flask框架中轻松创建和管理RESTful API,并自动生成API文档。通过定义API的路由、请求参数和响应结果,我们可以方便地生成具有完整描述和示例的API文档。 Flask Restful Swagger提供了一系列装饰器和注解,用于定义API的路由和参数。我们可以使用@api.route装饰器定义API的路由,并使用@api.doc装饰器定义API的文档信息。通过注解和装饰器的结合,我们可以灵活地描述API的请求参数、响应结果以及其他相关信息。 在生成API文档时,Flask Restful Swagger会解析我们定义的API信息,并将其转换成Swagger所需的JSON或YAML格式。然后,Swagger将根据这些信息生成交互式的API文档,其中包含API的路由、请求方式、请求参数、响应结果等详细信息。这使得我们可以方便地查看和测试API的接口,并清楚地理解API的使用方法和功能。 总结来说,通过使用Flask Restful Swagger,我们可以在Flask框架中快速构建和管理RESTful API,并自动生成可交互的API文档。这不仅提高了API的开发效率,也方便了API的使用者理解和测试API的接口。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值