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

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

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

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"}'

НТН

Другие вопросы по тегам