Welke response code te gebruiken?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • NeFoRcE
  • Registratie: Mei 2004
  • Laatst online: 09-10 14:43

NeFoRcE

Hallo? Bent u daar?

Topicstarter
Dag iedereen,

Ik heb een korte vraag, maar kom er niet achter wat nou het juiste antwoord is.

Ik heb een PHP script waarbij een externe partij data naar toe post. Nou wordt die data afgehandeld, maar voor het zover is, worden er meerdere checks uitgevoerd. Bijvoorbeeld of de incoming data wel van een bepaald type is, of de request wel toegestaan is, en - en nu komt het - of de gegevens al reeds in de DB staan / verwerkt zijn.

Wat voor response code zou je nou het beste kunnen gebruiken voor bijvoorbeeld dat laatste puntje?

Professioneel Heftruck Syndroom

Beste antwoord (via NeFoRcE op 03-03-2016 17:21)


  • Siebsel
  • Registratie: November 2004
  • Laatst online: 10-10 15:42
Een 422 is beter op z'n plaats. Een 409 gaat meer over conflicterende requests (van 2 kanten komt exact dezelfde request, maar met andere data), 422 betekend dat je request wel goed is, maar ergens in je data wat faalt.

Zie ook de flowcharts op http://racksburg.com/choosing-an-http-status-code/.

En een 200 kan wel, maar moet je eigenlijk niet willen. Wat er ook gebeurd, het is niet "200 OK", er is ergens iets verkeerd gegaan.
Het is raar om application level errors in je http response code te gaan verwerken.
Een HTTP-code is zelden de volledige error. Het is slechts een indicatie, zoals hierboven ook al ergens staat zou je ook een generieke 400 kunnen gooien. In de body van de pagina kun je prima je application errors laten zien. Ik vind het zelf nog veel gekker dat als ik een request doe, ik eerst de hele body (of iig een deel ervan) moet parsen om te zien of (en wat) er verkeerd is gegaan.

edit:
Haan schreef op donderdag 03 maart 2016 @ 13:13:
[...]
meer werk voor de andere aanroepende partij om met alle verschillende foutcodes om te gaan.
Mwoah, niet helemaal waar. Als je lui bent, kun je checken op "statuscode >= 200 && < 300" en als dat het geval is, je content tonen en anders een foutmelding.

[ Voor 20% gewijzigd door Siebsel op 03-03-2016 15:54 ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • denyos
  • Registratie: Februari 2004
  • Laatst online: 18:23
Je zou kunnen denken aan code 409 - Conflict omdat het conflicterende data is.
Een 304 - Not modified zou natuurlijk ook kunnen. Je wijst de nieuwe data af, en de oorspronkelijke data blijft ongewijzigd.

Strava


Acties:
  • +2 Henk 'm!

  • Devilly
  • Registratie: Januari 2009
  • Niet online
denyos schreef op donderdag 03 maart 2016 @ 10:13:
Je zou kunnen denken aan code 409 - Conflict omdat het conflicterende data is.
Een 304 - Not modified zou natuurlijk ook kunnen. Je wijst de nieuwe data af, en de oorspronkelijke data blijft ongewijzigd.
304 Not Modified is meer voor het ophalen van data en daarmee voor een GET. De 409 Conflict vind ik een passelijke status code. Je stuurt data op en de server kan de request niet uitvoeren vanwege een conflict in de data (die is meegestuurd met de request ten opzichte van de data die al op de server aanwezig is).

Acties:
  • 0 Henk 'm!

  • NeFoRcE
  • Registratie: Mei 2004
  • Laatst online: 09-10 14:43

NeFoRcE

Hallo? Bent u daar?

Topicstarter
Dank mensen! 409 it is. Heb 'm denk ik over het hoofd gezien (het zijn er ook zo veel). Dank!

Professioneel Heftruck Syndroom


Acties:
  • +1 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:17

Haan

dotnetter

Afhankelijk van hoe je de externe partij precies van je API gebruik maakt, zou je ook nog de meer generieke 400: Bad request kunnen gebruiken. Meer detail kan mooi zijn, maar meer foutcodes zorgt ook voor meer documentatie en meer werk voor de andere aanroepende partij om met alle verschillende foutcodes om te gaan.

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

Ik zou zelf een http200 doen met een bericht met een application level error die je terug geeft.

Het is raar om application level errors in je http response code te gaan verwerken.

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • NeFoRcE
  • Registratie: Mei 2004
  • Laatst online: 09-10 14:43

NeFoRcE

Hallo? Bent u daar?

Topicstarter
YakuzA schreef op donderdag 03 maart 2016 @ 13:26:
Ik zou zelf een http200 doen met een bericht met een application level error die je terug geeft.

Het is raar om application level errors in je http response code te gaan verwerken.
Hier twijfelde ik ook over inderdaad. Ik heb de andere partij gevraagd of dit standaard 200 moest worden (nog voor jouw bericht). Maar geen reactie op gekregen (nog).

Professioneel Heftruck Syndroom


Acties:
  • +1 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tja, dat is gewoon een keuze, in hoeverre je het REST noemt en enkel HTTP methods en/of status codes gebruikt op resource names.

En dat kan gewoon allebei, maar die keuze is soms voer voor jarenlange discussies met miljoenen berichten. Dus begin flamewar na deze post. ;)

{signature}


Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • Siebsel
  • Registratie: November 2004
  • Laatst online: 10-10 15:42
Een 422 is beter op z'n plaats. Een 409 gaat meer over conflicterende requests (van 2 kanten komt exact dezelfde request, maar met andere data), 422 betekend dat je request wel goed is, maar ergens in je data wat faalt.

Zie ook de flowcharts op http://racksburg.com/choosing-an-http-status-code/.

En een 200 kan wel, maar moet je eigenlijk niet willen. Wat er ook gebeurd, het is niet "200 OK", er is ergens iets verkeerd gegaan.
Het is raar om application level errors in je http response code te gaan verwerken.
Een HTTP-code is zelden de volledige error. Het is slechts een indicatie, zoals hierboven ook al ergens staat zou je ook een generieke 400 kunnen gooien. In de body van de pagina kun je prima je application errors laten zien. Ik vind het zelf nog veel gekker dat als ik een request doe, ik eerst de hele body (of iig een deel ervan) moet parsen om te zien of (en wat) er verkeerd is gegaan.

edit:
Haan schreef op donderdag 03 maart 2016 @ 13:13:
[...]
meer werk voor de andere aanroepende partij om met alle verschillende foutcodes om te gaan.
Mwoah, niet helemaal waar. Als je lui bent, kun je checken op "statuscode >= 200 && < 300" en als dat het geval is, je content tonen en anders een foutmelding.

[ Voor 20% gewijzigd door Siebsel op 03-03-2016 15:54 ]


Acties:
  • +2 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

YakuzA schreef op donderdag 03 maart 2016 @ 13:26:
Ik zou zelf een http200 doen met een bericht met een application level error die je terug geeft.

Het is raar om application level errors in je http response code te gaan verwerken.
Dat valt wel mee, en die discussie is al veel vaker gevoerd.

Zie bijvoorbeeld mjin topic hier: Programmers.SE: Do web applications use HTTP as a transport layer, or do they count as an integral part of the HTTP server?.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...

Pagina: 1