Дуршлаг и карниз не работают должным образом

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

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


person Denis    schedule 17.04.2013    source источник


Ответы (1)


Столкнулся с тем же, и после копания, если вы посмотрите на функцию 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"}'

ХТН

person Marconi    schedule 06.07.2013