Если вы не указали аргумент methods
для app.route()
, то по умолчанию принимается только GET
и HEAD
запросы (*) .
Вам нужно явно установить methods
, если вам нужно принять другие методы HTTP , например POST
, в противном случае Flask ответит 405 Метод не разрешен HTTPКод ответа , когда клиент использует метод HTTP, который вы не перечислили, и ваша функция маршрута просто не вызывается.
Так что если ваш маршрут должен обрабатывать как GET
, так иPOST
запросов, но вы забыли добавить methods=['GET', 'POST']
к @route()
, тогда вы получите ошибку, так как POST
запросов приведут к ответу 405 вместо вашего маршрута, обрабатывающего запрос.
В вашем случаеоднако вы должны , а не использовать methods=['GET', 'POST']
, и вместо этого позволить клиентам, которые все равно пытаются использовать POST, знать, что ваш маршрут не обрабатывает этот метод.Лучше быть явно об ошибке, чем позволить ей молча пройти.
(*) HEAD
добавляется всякий раз, когда вы используете регистрацию маршрута, который обрабатывает GET
, и вв случае запроса HEAD
ваш маршрут вызывается, и клиенту затем передаются только заголовки.Колба автоматически обрабатывает для вас OPTIONS
, в этом случае маршрут не вызывается.