News:

Velkommen til FMK Teknik

Main Menu

Brug af HTTP statuskoder i FMK 1.6.0

Started by Mikkel Andersen, 2021-12-16 09:34:40

Previous topic - Next topic

Mikkel Andersen

Hej.
P.t. returnerer FMK (1.4.6 E3) og hele økosystemet omkring dette i de fleste kald HTTP 500 "Internal server error", når noget fejler. Alt efter årsagen til fejlen kan man nogle gange finde uddybende fejlkode i FaultCode elementet. Hvis FaultCode elementet findes, kan dette indeholde koder der indikerer at indholdet i requested er ugyldigt (og fejler under valideringen) eller fejl fra DCC om timeouts osv.

Vi bruger i dag lidt krudt på at undersøge de mange muligheder for årsagen til fejlen når vi får en HTTP 500 og dermed forsøger at afgøre om det kan betale sig at sende requested igen efter en lille pause, eller simpelthen parkere det i en fejlkø, fordi indholdet ikke blev fundet validt af FMK.

Det ville være nemmere at afgøre om fejlen skyldes ugyldige data eller om der er et driftsproblem hvis:

  • HTTP 400 (Bad request) returneres når vi ikke magter at sende valide data.
  • HTTP 500 (Internal server error) returneres når der er tale om udfald i driften, så vi derved kan afgøre om vi vil prøve igen lidt senere.

/Mikkel Andersen

Mikkel Andersen

Hej.

Her er et eksempel hvor ovenstående forslag ville have gjort en stor forskel i smidig håndtering af fejlsituationer.

Den 11-03-2022 10:41:27.355 sendes MessageID f0e5e3d1-85b7-495e-ab16-ca7327d5cb6c som resulterer i en HTTP 500 med fejlkoden dcc_syntax_error.
Fejlkoden er nærmere beskrevet her https://www.nspop.dk/display/public/web/DCC+-+Guide+til+anvendere
og i vores øjne betyder det at vores applikation har sendt et ugyldigt request. Derfor parkeres kaldet i vores system og afventer manuel interaktion. I virkeligheden viser det sig at kaldet er korrekt udformet, men noget i DCC'en, eller deromkring, er gået galt, da vi senere kan afsende kaldet uden at have ændret noget.

Derfor vil jeg igen appelere til at en fremtidig FMK platform bruger HTTP statuskoder mere hensigtsmæssigt i stedet for at klassificere alt som HTTP 500.

/Mikkel Andersen

Søren Kröger

Hej

det er et rigtig godt forslag.
For at overholde DGWS standarden skal anvender og interne applikationsfejl dog have HTTP 500 som status kode. Men vi har nu implementeret en HTTP 503 fejlkode i alle miljøer, som vil blive returneret i tilfælde af driftsproblemer. Body vil i det tilfælde ikke indeholde SOAP svar
Dokumentationen er rettet til mht HTTP 503.

Venlig hilsen
Søren