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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: типы HTTP запросов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Perun
Отправлено: 07 Ноября, 2020 - 13:04:41
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




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



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




Perun пишет:
Есть например post get, с ними мы работаем указывая явно. например в html форме. А в каком контексте понимать put, delete и как это применяется в контексте php?


Добрый день!
Вообще как, в смысле теории и терминов, это не моё...
Просто приведу пример. Есть Веб-сервис. В докуменации сказано, куда следует отправлять запросы (End point URL) и каким методом. Выглядит это так
Спойлер (Отобразить)
Теперь в контексте PHP.
Спойлер (Отобразить)
Удачи!

(Отредактировано автором: 07 Ноября, 2020 - 15:04:52)

 
 Top
Perun
Отправлено: 07 Ноября, 2020 - 16:09:30
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2016  


Помог: 0 раз(а)




Если в контексте API, то понятно. Я пока до curl и REST API не дошел
 
 Top
Vladimir Kheifets
Отправлено: 08 Ноября, 2020 - 07:16:39
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




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
Удачи!

(Отредактировано автором: 08 Ноября, 2020 - 07:38:31)

 
 Top
miketomlin
Отправлено: 08 Ноября, 2020 - 09:01:24
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




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 можно было легко поменять местами, но для определенности решили их использовать так.
 
 Top
LIME
Отправлено: 12 Ноября, 2020 - 02:51:12
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




miketomlin для обновления PATCH
PUT для создания с заранее известным link(id передаем вместе с данными)
POST - создание и возвращение link(id генерит сервер)
 
 Top
miketomlin
Отправлено: 12 Ноября, 2020 - 15:01:19
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




LIME, для обновления тоже обычно используется PUT. PATCH – это для более сложных способов обновления: https://tools[dot]ietf[dot]org/html/rfc5789 (первый абзац). Когда ты реально выполняешь частичное обновление, желая сократить трафик и т.п.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB