Улучшения в браузере
Last updated
Was this helpful?
Last updated
Was this helpful?
"Есть два не вызывающих споров варианта использования перегруженного POST. Первое - это имитация унифицированного интерфейса HTTP для клиентов, таких как веб-браузеры, которые не поддерживают PUT или DELETE".
, Leonard Richardson & Sam Ruby.
Для того чтобы Web-интерфейс API функционировал, есть несколько усовершенствований для браузеров, которые должны быть предоставлены REST-фреймворком.
Начиная с версии 3.3.0 и далее они включаются с помощью javascript, используя библиотеку .
Библиотека поддерживает браузерные методы PUT
, DELETE
и другие методы на HTML формах.
После включения библиотеки используйте атрибут data-method
на форме, как показано ниже:
Обратите внимание, что до версии 3.3.0 эта поддержка осуществлялась на стороне сервера, а не на основе javascript. Стиль перегрузки методов (используемый в ) больше не поддерживается из-за некоторых проблем, возникающих при разборе запросов.
Отправка через браузер таких типов содержимого, как JSON, поддерживается , используя поля формы с атрибутами data-override='content-type'
и data-override='content'
.
Например:
Обратите внимание, что до версии 3.3.0 эта поддержка осуществлялась на стороне сервера, а не на основе javascript.
DRF может принимать параметры URL в стиле ?format=json
, что может быть полезным сокращением для определения типа содержимого, которое должно быть возвращено из представления.
Это поведение контролируется с помощью параметра URL_FORMAT_OVERRIDE
.
До версии 3.3.0 поддерживался заголовок расширения X-HTTP-Method-Override
для переопределения метода запроса. Это поведение больше не используется в ядре, но может быть добавлено при необходимости с помощью middleware.
Например:
До версии 3.3.0 DRF включал встроенную поддержку параметров URL в стиле ?accept=application/json
, что позволяло переопределять заголовок Accept
.
После внедрения API согласования контента это поведение больше не включено в ядро, но может быть добавлено с помощью пользовательского класса согласования контента, если это необходимо.
Например:
Нет. Одно время предполагалось, что HTML5 будет поддерживать формы PUT
и DELETE
, но позже это было . Остается добавления поддержки PUT
и DELETE
, а также того, как поддерживать типы содержимого, отличные от закодированных в форме данных.