Я создаю Flask приложение, которое поддерживает доступ пользователей и через API. Путь /api
и его подпути предназначены для доступа к API. Весь доступ API должен получить ответ в JSON, т. Е. С Content-Type
из application/json
.
Я организовал все конечные точки API в чертеже с именем api
. Используя технику, показанную в Реализация исключений API , я определил пользовательский класс ошибок с именем ApiAccessError
и зарегистрировал обработчик для него в api
проекте, поэтому всякий раз, когда ApiAccessError
вызывается в функции представления в проекте api
зарегистрированный обработчик для ApiAccessError
вызывается для генерации ответа JSON с Content-Type
из application/json
.
Проблема, с которой я сталкиваюсь с текущим проектом, заключается в том, что всякий раз, когда ошибка, которая не является ApiAccessError
, возникает при обработке запроса API, ответ на запрос находится не в JSON, а в HTML, т.е. имеет Content-Type
из text/html
. Такая ошибка может возникнуть, например, при доступе к конечной точке API GET-only с помощью метода POST. В этом случае ответ сервера находится в HTML с кодом состояния 405. Я хотел бы, чтобы ответ был в JSON при сохранении кода состояния 405. Как можно настроить Flask для ответа на ошибку 405 и все остальные ошибки по умолчанию в JSON вместо HTML при обработке запросов API?