Функция jsonify для колбы не соответствует колбе-зефиру - PullRequest
0 голосов
/ 12 ноября 2018

Я занимаюсь разработкой API с использованием flask-RESTful и у меня возникла проблема с функцией Flask jsonify. Я использую колбу-зефир для сериализации JSON. Ниже приведен очень упрощенный фрагмент кода:

result = activities_schema.dump(activities)
return jsonify(result)

Локально, конечная точка вернет json с ключами «данные» и «ошибки»; однако при работе на сервере Linux возвращается результат, содержащий список и dict, без ключей «data» и «errors».

Я определил, что это несоответствие вызвано функцией jsonify Flask, которая распечатывает результаты до того, как они будут возвращены API. И локально, и на сервере результат равен:

MarshalResult(data=[], errors={})

Однако, когда я печатаю ответ после использования jsonify от Flask, я получаю это локально:

('{\n  "data": [], \n  "errors": {}\n}', '\n')

пока это напечатано на сервере:

('[\n  [], \n  {}\n]', '\n')

Кто-нибудь знает, почему они не совпадают?

1 Ответ

0 голосов
/ 12 ноября 2018

Я исследовал еще немного и нашел одно решение проблемы (я чувствую себя немного глупо, так как решение правильно в документах), но не могу объяснить, почему возникает первоначальная проблема.

Решение (найдено здесь ) заключается в использовании:

jsonify(result.data)

или

activities_schema.jsonify(result)

Любой метод возвращает только данные, а не ошибки.

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

...