我尝试添加模式验证,因为它在官方的檐口文档中描述,并通过装饰器如service_name.post(schema = SomeSchemaClass)进行,但它不起作用
import colander
class TrackSchema(colander.MappingSchema):
genre = colander.SchemaNode(colander.String(), location="body", type='str')
@track.post(schema=TrackSchema)
def create_track(request):
...
我收到错误
"status": "error", "errors": [{"location": "body", "name": null, "description": "Expecting value: line 1 column 2 (char 1)"}, {"location": "body", "name": "genre", "description": "genre is missing"}]}
我尝试了不同类型的位置arg,比如查询字符串和标题,但我得到了同样的错误。
答案 0 :(得分:3)
遇到同样的事情并且在深入研究之后,如果你看一下cornice.util.extract_request_data
函数,你会发现它试图将身体加载为json json.loads(request.body)
,所以你需要将你的数据发布为json:
curl -H "Content-Type: application/json" -X POST http://localhost:6543/foo -d '{"foo": "bar"}'
HTH