2013-04-17 4 views
3

Я пытаюсь добавить проверку схемы, как это описывают в официальном карниза документ и сделать это с помощью декоратора, как service_name.post (схемы = 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"}]} 

Я попробовать различные типы расположения арг как строки запроса и заголовков, но я получил ту же ошибку.

ответ

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

Смежные вопросы