Обновление Flask-RESTful и объект settings исчез. Как теперь форматировать даты?

Мне нужно обновить приложение от Flask-RESTful 0.2.5 до 0.3.5.

Мой API имеет более 40 конечных точек, приблизительно 25 из которых имеют сущности, которые имеют поля datetime в них. При использовании 0.2.5 я следовал превосходному, предоставленному в этом вопросе StackOverflow, и поместил следующую функцию в мой __init__.pyфайл:

class MyApiJsonEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, (datetime.datetime, datetime.date, datetime.time)):
            return obj.isoformat()
        elif isinstance(obj, Decimal):
            return str(obj)
        return json.JSONEncoder.default(self, obj)

flask.ext.restful.representations.json.settings["cls"] = MyApiJsonEncoder

и это сработало замечательно. Теперь при обновлении до 0.3.5 объекта settings больше нет.

File ".........../api/__init__.py", line 35, in <module>
  flask.ext.restful.representations.json.settings["cls"] = MyApiJsonEncoder
AttributeError: 'module' object has no attribute 'settings'

Хорошо, поэтому я посмотрел в документацию и обнаружил, что я должен использовать @marshal_with. Но это пугает меня! Кажется, что я должен войти в каждую конечную точку, которая имеет поле date или datetime, и поместить в словарь полей с @marshal_withдекоратором. На самом деле, похоже, что этот словарь не просто утверждает, что я хочу, чтобы мои даты и время в формате ISO8601, но что другие поля должны быть назначены с их предпочтениями маршалинга, а также.

Я надеюсь, что я читаю это неправильно.

Мой вопрос: как я могу с помощью Flask-RESTful 0.3.5 заявить глобально и неинструзивно , что я хочу, чтобы все даты были упорядочены в формате ISO8601. (Под ненавязчивым я имею в виду, что я не хочу испортить мои существующие 40 конечных точек.)

1 ответ

  1. Теперь кодировщик задается как clsсвойство набора dict как RESTFUL_JSONатрибут конфигурации приложения.

    Здесь объясняется, как установить этот атрибут .