利用swagger做校验参数:
1、首先是要在定义请求函数前面加一个这样的修饰器@swagger.validate('user_schema') #括号里面填入你用于校验参数的swagger注释schema
@swagger.validate('user_schema')
def post(self):
2、第二就是要在swagger注释里面的schema中的每一层定义的参数都要加required:这个属性,例如:
完整这两个步骤,你发送post请求的时候,就会调用swagger里的注释进行校验你传入的参数了。
演示:
1、缺少参数id_two时候:
2、输入的参数name格式不对的时候:
以上这两种情况:缺啥参数和参数格式不正确,都是可以校验出来,并且返回说明相应的出错信息。
完整代码
import flask, json
from flask import request,Flask,Blueprint
from flask_restful import Resource
import flask_restful
from flasgger import Swagger,swag_from
server = Flask(__name__) # 创建一个服务,把当前这个python文件当做一个服务
swagger=Swagger(server)
class data_get(Resource): # 返回data
def get(self):
data = {
'User': {
'id': '66',
'name': '李华'
}
}
return data
class data_post(Resource):
@swagger.validate('user_schema') #括号里面填入你用于校验参数的swagger注释schema
#@swag_from('a.yml', validation=True)
def post(self):
"""
接口名称
---
tags:
- 用户相关接口
parameters:
- name: 接口主体
- in: body
schema:
id: user_schema
required:
- name
- id
properties:
name:
type: string
description: 值为张三
example: 张三
enum: [张三,李四]
id:
required:
- id_one
- id_two
properties:
id_one:
type: array
example: [1,2,3]
exception: id_one
id_two:
type: array
example: [1,2,3]
exception: id_two
responses:
301:
id: user_responses
properties:
success:
description: 成功为true,失败为false
type: string
example: true
msg:
type: string
example: ""
"""
a = swagger.get_schema('user_schema')
print(a)
r = request.data
da = json.loads(r)
print(da)
return da
admin = Blueprint('admin',__name__) #创建一个蓝图admin
api=flask_restful.Api(admin,catch_all_404s=True) #蓝图充当服务器server角色
api.add_resource(data_get,'/data/get')
api.add_resource(data_post,'/data/post')
if __name__ == '__main__':
server.register_blueprint(admin) #在服务器server上注册蓝图admin
server.run(host='0.0.0.0',port=1362,debug=True) # 指定访问端口、host
参考文章:https://github.com/qjw/flasgger
https://github.com/flasgger/flasgger/blob/master/README.zh.md