HTTP būsenos kodas atnaujinimui ir ištrynimui?

Kokį būsenos kodą reikia nustatyti UPDATE ( PUT ) ir DELETE (pvz., Produktas buvo sėkmingai atnaujintas)?

863
26 февр. xpepermint nustatytas 26 vasario mėn 2010-02-26 18:16 '10, 18:16 PM 2010-02-26 18:16
@ 7 atsakymai

PUT užklausai: „ HTTP 200“ arba „ HTTP 204“ turi reikšti, kad „šaltinis buvo sėkmingai atnaujintas“.

DELETE“ užklausai: „ HTTP 200“ arba „ HTTP 204“ turi reikšti sėkmingą išteklių ištrynimą. HTTP 202 taip pat gali būti grąžintas, o tai reiškia, kad serveris priėmė nurodymą, ir „išteklius pažymėtas ištrynimui“.

9.6 PUT

Jei esamas išteklius modifikuojamas, turite siųsti atsakymo kodą 200 (OK) arba 204 (be turinio)> PRIVALO patvirtinti sėkmingą užklausos užbaigimą.

9.7 DELETE

Sėkmingas atsakymas turi būti 200 (OK), jei atsakyme yra objektas, apibūdinantis būseną, 202 (Priimta), jei veiksmas dar nepriimtas, arba 204 (Nėra turinio), jei veiksmas buvo atliktas, tačiau atsakymas neapima subjekto.

Šaltinis: w3.org: HTTP / 1.1 metodo apibrėžtys

„HTTP 200 OK“: standartinis atsakymas sėkmingiems HTTP užklausoms. Tikrasis atsakymas priklausys nuo naudojamo užklausos metodo.

HTTP 204 Nėra turinio: serveris sėkmingai apdorojo užklausą, bet nepateikia jokio turinio.

Šaltinis: HTTP būsenos kodų sąrašas: 2xx sėkmė

1342
26 февр. Atsakymą pateikė Daniel Vassallo , vasario 26 d. 2010-02-26 18:18 '10, 18:18, 2010-02-26 18:18

Trumpas atsakymas yra toks: PUT ir DELETE atveju turite siųsti 200 (OK) arba 204 (be turinio).

Ilgas atsakymas: čia yra visas sprendimų medis (spustelėkite, kad padidintumėte).

border=0

Šaltinis: https://github.com/for-GET/http-decision-diagram

651
26 февр. Atsakymas yra „ YesDDight“ 26 vasaris. 2010-02-26 18:23 '10, 18:23, 2010-02-26 18:23

Štai keletas patarimų:

DELETE

  • 200 (jei norite grąžinti papildomus duomenis) arba 204 (rekomenduojama).

  • 202 Ištrinta operacija dar nebaigta.

  • Jei nieko neištrinami, naudokite 204 arba 404 (DELETE operacija yra idempotent, ištrinti jau ištrintą elementą pavyksta, todėl galite grįžti į 204 , tačiau tiesa, kad idempotentas nebūtinai reiškia tą patį atsakymą)

Kitos klaidos:

  • Klaidingas prašymas (bloga sintaksė arba blogas prašymas keistas, bet galimas).
  • 401 Neteisėta autentifikavimo klaida
  • 403 Draudžiama: autorizacijos gedimas arba neteisingas programos identifikatorius.
  • 405 Neleidžiama. Žinoma
  • 409 Sudėtingų sistemų išteklių konfliktas gali būti įmanomas.
  • Ir 501 , 502 klaidų atveju.

PUT

Jei atnaujinate kolekcijos elementą

  • 200/204 dėl tų pačių priežasčių kaip ir anksčiau.
  • 202 jei operacija dar nėra baigta.

Nurodytas elementas neegzistuoja:

  • PUT gali būti 201 (jei sukūrėte elementą, nes tai yra jūsų elgesys)
  • 404 Jei nenorite sukurti elementų per PUT.

  • 400 Blogas užklausa (bloga sintaksė arba blogas užklausa dažniau nei DELETE).

  • 401 Neleistinas
  • 403 Draudžiama: autentifikavimo gedimas arba neteisingas programos identifikatorius.
  • 405 Neleidžiama. Žinoma
  • 409 Išteklių konfliktai gali būti įmanomi sudėtingose ​​sistemose, kaip ir DELETE.
  • Ir 501 , 502 klaidų atveju.
82
24 сент. Atsakymas, pateiktas Alfonso Tienda, rugsėjo 24 d. 2013-09-24 15:14 '13, 15:14 2013-09-24 15:14

RFC 2616 aprašo, kuriuos būsenos kodus naudoti .

Ir ne, jis ne visada yra 200 metų.

11
26 февр. Ignacio Vazquez-Abrams atsakymas, pateiktas vasario 26 d 2010-02-26 18:20 '10, 18:20, 2010-02-26 18:20

Be 200 ir 204, 205 (Atkurti turinį) gali būti tinkamas atsakymas.

Serveris įvykdė užklausą, o naudotojo agentas SHOULD turėtų iš naujo nustatyti dokumento tipą, dėl kurio prašymas buvo išsiųstas ... [pavyzdžiui,] išvalydami formą, kuria įvedamas įvestis.

6
09 янв. atsakymas pateikiamas 09.01 . 2013-01-09 00:15 '13 - 0:15 2013-01-09 00:15

Kadangi kyla klausimas, jei DELETE "turėtų" grąžinti 200 vs 204 , verta pamąstyti, kad kai kurie žmonės rekomenduoja grąžinti objektą, todėl pirmenybė teikiama 200 .

„Vietoj to, kad grįžtumėte į 204 (be turinio), API turėtų būti naudinga ir pasiūlyti lankytinas vietas.Šiame pavyzdyje manau, kad viena akivaizdi nuoroda, rodanti„ “kur.com/container/“ (minus „ištekliai“) yra konteineris Klientas gali ištrinti daugiau išteklių, todėl klientas gali ištrinti daugiau išteklių, todėl tai bus naudinga nuoroda. "

http://blog.ploeh.dk/2013/04/30/rest-lesson-learned-avoid-204-responses/

Jei klientas atitinka 204 atsakymą, jis gali atsisakyti arba eiti į API įvedimo punktą arba grįžti į ankstesnį aplankytą šaltinį. Nė vienas iš variantų nėra ypač geras.

Asmeniškai nenoriu pasakyti, kad 204 yra neteisingas (ir autorius nesako „erzina“), nes geras kliento pusėje talpinimas turi daug privalumų. Geriausia, kad bet kokiu atveju būtų nuoseklus.

6
29 мая '15 в 5:02 2015-05-29 05:02 atsakymas pateikiamas KCD gegužės 29 d., 15 val. 5:02 2015-05-29 05:02

2014 m. Birželio mėn. RFC7231 išnyko RFC2616. Jei atliekate REST per HTTP, tada RFC7231 aprašo, kokio elgesio tikimasi iš GET, PUT, POST ir DELETE

2
22 нояб. Atsakyti Ivan 22 lapkričio. 2016-11-22 18:52 '16 at 18:52 2016-11-22 18:52

Kiti klausimai dėl „ žymių arba „ Klauskite“