Зачем нужны методы отправки данных отличные от GET, POST?

Зачем нужны иные запросы по типу OPTIONS, PUT, PATCH, DELETE, HEAD, TRACE, CONNECT, если в html формах, js ajax их нельзя отправить(и приходится придумывать велосипеды по типу скрытого поля со значение названия одного из этих методов), а в php нельзя их обработать(только если опять таки принимать их в post просто проверять значение полученной переменной скажем method). И знает ли кто, будет ли нормальная поддержка этих методов в том же php и формах html? также еще интересно какой смысл их вообще использовать если в итоге с обычным post можно проделывать тоже самое что и без них
  • Вопрос задан
  • 729 просмотров
Решения вопроса 2
delphinpro
@delphinpro
frontend developer
Удобно эндпойнты в апи делать

[GET]    /order/{id}  получить информацию о заказе
[POST]   /order/{id}  создать новый заказ
[PUT]    /order/{id}  обновить данные в заказе
[DELETE] /order/{id}  удалить заказ


Вместо

[GET]  /order/{id}
[POST] /order/{id}/create
[POST] /order/{id}/update
[POST] /order/{id}/delete


будет ли нормальная поддержка этих методов в том же php и формах html?


https://caniuse.com/mdn-http_methods_put
https://caniuse.com/mdn-http_methods_delete

А что вы имеете ввиду под нормальностью в php? Определить метод запроса можно, прочитав $_SERVER['REQUEST_METHOD'], получить данные из php://input

UPD

Нашел вопрос аналогичный. Ответы краткие но емкие и по делу.
https://stackoverflow.com/questions/27941207/http-...
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
если в html формах, js ajax их нельзя отправить
Кроме хтмл и жс существует еще очень много окружений, способных отправить такие заголовки (самый простой пример - пхп или консольный курл). Чаще всего их (заголовки) используют для семантического разделения API "по намерению", то есть "удалить", "положить", "взять", "только заголовки" и т.д, в частности это применимо в рестфул апи.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
tmaslov22
@tmaslov22
Backend developer
Почитай спецификацию HTTP, там описали зачем такие методы и т.д. Помимо html и php существует куча технологий, в которых HTTP используют полностью.
Ответ написан
Комментировать
xPomaHx
@xPomaHx
1vs9
Можно всё отправлять, даже любые кастомные методы тем самым нарушив спецификацию.
spoiler
[
    'OPTIONS', 'post', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'TRACE', 'CONNECT', 'hui'
].forEach(method => {
    try {
        const req = new XMLHttpRequest()
        req.onload = console.dir
        req.open(method, '/')
        req.setRequestHeader("Content-Type", "application/json;charset=UTF-8");

        req.send(JSON.stringify({
            method
        }))
    } catch (er) {
        console.error('disallow', method)
    }
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы