Почему Python-Eve не перезаписывает кодировщик Flask JSON - PullRequest
0 голосов
/ 18 января 2019

При инициализации Eve можно указать пользовательский кодер json, как указано в документации здесь , вы можете сделать что-то вроде:

from eve.io.base import BaseJSONEncoder
    class CustomJSONEncoder(BaseJSONEncoder):
        ...   
app = Eve(settings=settings, json_encoder=CustomJSONEncoder)

Я ожидал, что внутренне результат будет:

flask.json_encoder == CustomJSONEncoder

но то, что я обнаружил в коде фляги , это:

self.data.json_encoder_class = CustomJSONEncoder

, который доступен позже с app.data.json_encoder_class. Это приводит к тому, что если вы используете какое-либо дополнение для фляги, которое использует кодировщик, у вас не будет ожидаемых пользовательских кодировок.

Простое решение может быть:

app = Eve(settings=settings, json_encoder=CustomJSONEncoder)
app.json_encoder = CustomJSONEncoder

но мне интересно:

  • Почему Ева не делает это сама?
  • Есть ли причина избегать изменения стандартного кодера JSON Flask по умолчанию?
  • Ева делает что-то дополнительно data.json_encoder_class?
  • Должно ли это быть задокументировано?
...