POST http://{{host}}/api/v1/orders
Content-Type: application/x-www-form-urlencoded
po=&summery=200&uid=21
# 用vscode插件rest-client模拟表单提交
# 接收参数提交
@web.route('/orders',methods=['POST'])
def create_order():
# 表单参数接收后放入验证类中
form=OrderForm(request.form)
# 如果验证失败返回400错误(Todo:此处应返回前端标准类输出格式)
if not form.validate():
return form.errors,400
order= Orders()
# 字典转换为模式类
order.set_attrs(form.data)
return form.data,201
# 定义一个WTForm验证类
class OrderForm(Form):
id = IntegerField(validators=[NumberRange(min=1, max=99)], default=1)
po= StringField(validators=[DataRequired()])
请求测试:
HTTP/1.0 400 BAD REQUEST
Content-Type: application/json
Content-Length: 48
Server: Werkzeug/2.0.1 Python/3.9.5
Date: Sun, 13 Jun 2021 08:03:00 GMT
{
"po": [
"This field is required."
]
}
### 美化错误输出
@web.route('/orders',methods=['POST'])
def create_order():
# 表单参数接收后放入验证类中
form=OrderForm(request.form)
# 如果验证失败返回400错误(Todo:此处应返回前端标准类输出格式)
if not form.validate():
errors={}
for k,v in form.errors.items():
errors[k]=','.join(v)
return errors,400
order= Orders()
# 字典转换为模式类
order.set_attrs(form.data)
return form.data,201
# 输出
HTTP/1.0 400 BAD REQUEST
Content-Type: application/json
Content-Length: 38
Server: Werkzeug/2.0.1 Python/3.9.5
Date: Sun, 13 Jun 2021 08:10:13 GMT
{
"po": "This field is required."
}