Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: типы HTTP запросов
Форумы портала PHP.SU » » Вопросы новичков » типы HTTP запросов

Страниц (1): [1]
 

1. Perun - 07 Ноября, 2020 - 13:04:41 - перейти к сообщению
Есть например post get, с ними мы работаем указывая явно. например в html форме. А в каком контексте понимать put, delete и как это применяется в контексте php? Где и как они явно указываются? Что значит, что post не идемпотентный? Например при отправке методом post мы отправляем данные на сервер. но создавать новую сущность или нет - определяет же логика в процессе обработки данных?
2. Vladimir Kheifets - 07 Ноября, 2020 - 15:00:14 - перейти к сообщению
Perun пишет:
Есть например post get, с ними мы работаем указывая явно. например в html форме. А в каком контексте понимать put, delete и как это применяется в контексте php?


Добрый день!
Вообще как, в смысле теории и терминов, это не моё...
Просто приведу пример. Есть Веб-сервис. В докуменации сказано, куда следует отправлять запросы (End point URL) и каким методом. Выглядит это так
Спойлер (Отобразить)
Теперь в контексте PHP.
Спойлер (Отобразить)
Удачи!
3. Perun - 07 Ноября, 2020 - 16:09:30 - перейти к сообщению
Если в контексте API, то понятно. Я пока до curl и REST API не дошел
4. Vladimir Kheifets - 08 Ноября, 2020 - 07:16:39 - перейти к сообщению
Perun пишет:
Если в контексте API, то понятно. Я пока до curl и REST API не дошел

В других контекстах мне не приходилось применять методы PUT и DELETE (есть ещё и другие). Может быть Вам повезёт.
Из html формы Вы можете отправить запросы только методами POST и GET,
а запросы другими методами можно разными способами.
Если Вы не дошли до curl может подойдет JavaScript/XMLHttpRequest.
На стороне сервера Вы можете обрабатывать, например, PUT, так
Спойлер (Отобразить)
См.Использование методов PUT и DELETE
https://habr[dot]com/ru/post/46032/
Здесь ответы на Ваши вопросы про идемпотентные методы и.т.д
https://www[dot]w3[dot]org/Protocols/rfc[dot][dot][dot]fc2616-sec9[dot]html
Удачи!
5. miketomlin - 08 Ноября, 2020 - 09:01:24 - перейти к сообщению
Perun пишет:
Если в контексте API, то понятно. Я пока до curl и REST API не дошел
К чему тогда эти вопросы? Именно там это плотно используется. Даже если вы делаете это на JS, как выше написали, считайте, что у вас в рамках сайта работает API.

Пых без хирургических инструментов плохо поддерживает доп. методы, например не разбирает PUT-параметры. Нужно страдать фигней вроде той, что выше показали, а ведь параметры в добавок могут быть переданы не в URL-формате!

Идемпотентность – это когда одинаковые запросы приводят к примерно одному и тому же результату. Например, когда ты PUT-ом пишешь одни и те же данные, ты обновляешь один и тот же объект, а когда POST-ом, то типа каждый раз создаешь новый (дополнительный), т.е. копию предыдущего, но с др. идентификатором. Это все каноны. Конечно, можно и по-другому. Например, у нас много адаптированных API исключительно под GET/POST. Только совсем уж не перегибайте палку. Например, я ржу-не-могу, когда вижу, как пытаются удалять GET-ом (по ссылке).
(Добавление)
Perun пишет:
но создавать новую сущность или нет - определяет же логика в процессе обработки данных?
Да. Но там многое завязано на адресацию. Типа GET/POST не достаточно для полного CRUD'а с типичной REST/HTTP-адресацией. Например:
GET /objects – получить данные/список объектов коллекции;
PUT /objects – обновить (собственные) данные коллекции;
DELETE /objects – удалить коллекцию;
а теперь вопрос: Как создать новый объект данной коллекции? Правильно,
POST /objects Подмигивание

В принципе глаголы PUT/POST можно было легко поменять местами, но для определенности решили их использовать так.
6. LIME - 12 Ноября, 2020 - 02:51:12 - перейти к сообщению
miketomlin для обновления PATCH
PUT для создания с заранее известным link(id передаем вместе с данными)
POST - создание и возвращение link(id генерит сервер)
7. miketomlin - 12 Ноября, 2020 - 15:01:19 - перейти к сообщению
LIME, для обновления тоже обычно используется PUT. PATCH – это для более сложных способов обновления: https://tools[dot]ietf[dot]org/html/rfc5789 (первый абзац). Когда ты реально выполняешь частичное обновление, желая сократить трафик и т.п.

 

Powered by ExBB FM 1.0 RC1