Який код статусу слід встановити для UPDATE
( PUT
) та DELETE
(наприклад, продукт успішно оновлений)?
Який код статусу слід встановити для UPDATE
( PUT
) та DELETE
(наприклад, продукт успішно оновлений)?
Відповіді:
Для запиту PUT : HTTP 200 або HTTP 204 повинні означати "ресурс успішно оновлений".
Для запиту DELETE : HTTP 200 або HTTP 204 повинні означати "ресурс успішно видалений". HTTP 202 також може бути повернутий, що означає, що сервер прийняв інструкцію і "ресурс був позначений для видалення".
Якщо існуючий ресурс змінено, код відповідей 200 (ОК) або 204 (Без вмісту)> ДОЛЖЕН бути надісланим, щоб вказати на успішне завершення запиту.
Успішна відповідь повинна бути 200 (ОК), якщо відповідь включає суб'єкт, що описує статус, 202 (Прийнято), якщо дія ще не здійснено, або 204 (Немає вмісту), якщо дія було прийнято, але відповідь не включає суб'єкт господарювання.
Джерело: W3.org: HTTP / 1.1 Визначення методів
HTTP 200 OK: Стандартний відповідь на успішні запити HTTP. Фактична відповідь буде залежати від використовуваного методу запиту.
HTTP 204 Без вмісту: сервер успішно обробив запит, але не повертає жодного вмісту
Джерело: Список кодів HTTP-статусу: 2xx Успіх
Коротка відповідь: і для PUT, і для DELETE вам слід надіслати або 200 (ОК), або 204 (Без вмісту).
Довга відповідь: ось повна схема рішення (натисніть, щоб збільшити).
Ось кілька порад:
УДАЛИТИ
200 (якщо потрібно надіслати деякі додаткові дані у відповіді) або 204 (рекомендується).
202 Операція видалена ще не здійснена.
Якщо нічого не можна видалити, використовуйте 204 або 404 (операція DELETE ідентична, видалення вже видаленого елемента є успішною , тому ви можете повернути 204 , але це правда, що idempotent не обов'язково означає той самий відгук)
Інші помилки:
- 400 Неправильний запит (неправильний синтаксис або поганий запит є дивним, але можливим).
- 401 Несанкціонована помилка аутентифікації
- 403 Заборонено : помилка авторизації або недійсний ідентифікатор програми.
- 405 Не дозволено . Звичайно.
- 409 Конфлікт ресурсів можливий у складних системах.
- І 501 , 502 у разі помилок.
ПУТ
Якщо ви оновлюєте елемент колекції
- 200/204 з тих же причин, що і ВИДАЛИТИ вище.
- 202, якщо операція ще не здійснена.
Посиланий елемент не існує:
- PUT може бути 201 (якщо ви створили елемент, тому що це ваша поведінка)
404 Якщо ви не хочете створювати елементи через PUT.
400 Неправильний запит (неправильний синтаксис або поганий запит, частіше, ніж у випадку DELETE).
- 401 Несанкціонований
- 403 Заборонено : помилка аутентифікації або недійсний ідентифікатор програми.
- 405 Не дозволено . Звичайно.
- 409 Конфлікт ресурсів може бути можливим у складних системах, як у DELETE.
- 422 Unprocessable об'єкт Це допомагає відрізнити «Невірний запит» (наприклад , невірний формат XML / JSON) і неприпустимі значення поля
- І 501 , 502 у разі помилок.
RFC 2616 описує, які коди статусу використовувати .
І ні, це не завжди 200.
На додаток до 200 та 204, 205 (Скинути вміст) може бути коректною відповіддю.
Сервер виконав запит, і користувальницький агент ДОЛЖНО скинути перегляд документа, який спричинив надсилання запиту ... [наприклад] очищення форми, в якій вводиться вхід.
Оскільки питання заглиблюється в те, чи DELETE "повинен" повернути 200 проти 204 , варто врахувати, що деякі люди рекомендують повернути об'єкт із посиланнями, тому перевага для 200 .
"Замість того, щоб повернути 204 (Без вмісту), API повинен бути корисним і запропонувати місця, де можна перейти. У цьому прикладі я думаю, що одне очевидне посилання, яке потрібно надати, - це" "Where.com/container/ '(мінус' ресурс ') " - контейнер, з якого клієнт щойно видалив ресурс. Можливо, клієнт бажає видалити більше ресурсів, щоб це було корисним посиланням. "
http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204- responses/
Якщо клієнт стикається з відповіддю 204, він може або відмовитися, перейти до точки входу API, або повернутися до попереднього ресурсу, який він відвідав. Жоден варіант не є особливо хорошим.
Особисто я б не сказав, що 204 - це неправильно (також не автор, він каже "дратує"), тому що хороший кешування на стороні клієнта має багато переваг. Найкраще - бути послідовними в будь-якому випадку.
Ось код коду статусу, який ви повинні знати для свого знання.
- 100 Продовжуйте
- 101 Переключення протоколів
- 102 Обробка
- 103 Ранні підказки
- 200 ОК
- 201 Створено
- 202 Прийнято
- 203 Неавторитетна інформація
- 204 Немає вмісту
- 205 Скидання вмісту
- 206 Частковий зміст
- 207 Багатосторонність
- 208 Вже повідомлено
- 226 IM Використовується
- 300 варіантів
- 301 Переїхав постійно
- 302 Знайдено
- 303 Див. Інше
- 304 Не змінено
- 305 Використовуйте проксі
- 306 Комутаційний проксі
- 307 Тимчасовий перенаправлення
- 308 Постійний перенаправлення
- 400 Поганий запит
- 401 Несанкціонований
- 402 Потрібна оплата
- 403 Заборонено
- 404 Не знайдено
- 405 Метод не дозволений
- 406 Неприйнятно
- 407 Необхідна перевірка справжності проксі
- 408 Запит на очікування
- 409 Конфлікт
- 410 Пропало
- 411 Необхідна довжина
- 412 Попередня умова не виконана
- 413 Корисна навантаження Занадто велика
- 414 URI Занадто довгий
- 415 Непідтримуваний тип носія
- 416 Діапазон не підлягає задоволенню
- 417 Очікування не вдалося
- 418 Я чайник
- 420 Невдача методу
- 421 Запит на перенаправлення
- 422 Недоступна особа
- 423 заблоковано
- 424 Невдала залежність
- 426 Потрібна оновлення
- 428 Необхідна попередня умова
- 429 Занадто багато запитів
- 431 Запити поля заголовка занадто великі
- 451 Недоступно з юридичних причин
- 500 Внутрішня помилка сервера
- 501 Не реалізовано
- 502 Поганий шлюз
- 503 Сервіс недоступний
- Тайм-аут 504 шлюзу
- Версія 505 Http не підтримується
- 506 Варіант Також домовляйтесь
- 507 Недостатнє зберігання
- 508 Петля Виявлено
- 510 Не розширений
- 511 Network Authentication Required
Коли ресурс буде змінено, код відповіді повинен бути 200 ("ОК") . Якщо стан ресурсу змінюється таким чином, що змінює URI на ресурс (наприклад, перейменований обліковий запис користувача), код відповіді - 301 ("Переміщений постійно"), а заголовок Location повинен надавати новий URI.
Коли об’єкт видалено, код відповіді повинен бути 200 ("ОК").
Перейдіть за посиланням нижче, щоб отримати детальну інформацію - код статусу для відпочинку