Коротко
- Використовувати
GET
для safe and
idempotent
запитів
- Використовувати
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 для операції, яка змінює дані. Якщо пошукова система сканує посилання на ваш злий оп або клієнтські закладки, це може призвести до великих проблем.