Коротко
- Використовувати
GETдля safe andidempotentзапитів
- Використовувати
POSTдля neither safe nor idempotentзапитів
У деталях
Для кожного є належне місце. Навіть якщо ви не дотримуєтесь принципів RESTful , багато чого можна отримати, дізнавшись про REST та про те, як працює підхід, орієнтований на ресурси.
RESTful додаток буде use GETsдля операцій, які є обома safe and idempotent.
safeОперація являє собою операцію , яка робить not change the dataзапитується.
idempotentОперація, в якій результат буде be the sameбайдуже , скільки разів ви питаєте його.
Цілком очевидно, що оскільки GET використовуються для безпечних операцій, вони автоматично також є ідентичними . Зазвичай GET використовується для отримання ресурсу (наприклад, питання та пов'язані з ним відповіді на переповнення стека) або збору ресурсів.
Додаток RESTful використовуватиме PUTsдля операцій, які є not safe but idempotent.
Я знаю, що питання стосувалося GET і POST, але я повернусь до POST через секунду.
Зазвичай PUT використовується для редагування ресурсу (наприклад, редагування питання або відповіді на переповнення стека).
A POSTбуде використовуватися для будь-якої операції, яка є neither safe or idempotent.
Зазвичай POST буде використовуватися для створення нового ресурсу, наприклад, створення НОВОГО питання SO (хоча в деяких проектах PUT також буде використовуватися для цього).
Якщо ви запустили пошту двічі, ви створили ДВА нових запитання.
Існує також операція DELETE, але я здогадуюсь, що я можу це залишити :)
Обговорення
На практиці сучасні веб-браузери, як правило, надійно підтримують лише GET та POST (усі ці операції можна виконувати за допомогою дзвінків Javascript, але в частині введення даних у форми та натискання надіслати, як правило, є два варіанти). У програмі RESTful POST часто буде відмінено для надання також дзвінків PUT і DELETE.
Але навіть якщо ви не дотримуєтесь принципів RESTful, це може бути корисно продумати з точки зору використання GET для отримання / перегляду інформації та POST для створення / редагування інформації.
Ніколи не слід використовувати GET для операції, яка змінює дані. Якщо пошукова система сканує посилання на ваш злий оп або клієнтські закладки, це може призвести до великих проблем.