Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   REST-Client mit 404 (https://www.delphipraxis.net/208781-rest-client-mit-404-a.html)

Incocnito 14. Sep 2021 06:56

REST-Client mit 404
 
Hi Zusammen,

ich habe einen REST-Service, welcher bei einigen Kunden einen Endpunkt zur Verfügung stellt und bei einigen nicht.
Dort soll dann der HTTP-Code 404 zurück kommen. Das tut auch soweit, allerdings wirft die Komponente zusätzlich eine Exception.
Das ist zwar mit try-except abfangbar und die Kunden sehen davon dann auch nichts, aber ich empfinde das gerade beim Debuggen
(bei uns im Haus hat nur einer den Endpunkt in seinem jeweiligem REST-Service, alle anderen bekommen beim debuggen
immer wieder diese Exception) extrem nervig.

Verwendet werden TRestClient, TRestRequest und TRestResponse für die Verbindung.

Im TRestClient-Objekt wurde bereits "RaiseOnException500" auf "False" gesetzt,
aber bei anderen HTTP-Codes soll ja auch keine Exception kommen.

Jemand einen Tipp, wie ich "vernünftig" debuggen kann? meine derzeitige Lösung mit einem
Compilerschalter den Teil zu überspringen, finde ich jetzt nicht so geil.
Außerdem läuft man Gefahr, dass sowas dann beim Kunden landet.

Mit freundlichem Gruß
Incocnito

jaenicke 14. Sep 2021 07:16

AW: REST-Client mit 404
 
Zitat:

Zitat von Incocnito (Beitrag 1494738)
aber ich empfinde das gerade beim Debuggen
(bei uns im Haus hat nur einer den Endpunkt in seinem jeweiligem REST-Service, alle anderen bekommen beim debuggen
immer wieder diese Exception) extrem nervig.

Deshalb kann man die Anzeige einzelner Exception-Typen ja auch deaktivieren (wird bei einer Exception direkt angeboten, außerdem in den Optionen). Dann wird die Exception auch beim Debuggen einfach ohne Meldung abgefangen, taucht aber im Ereignislog auf, damit man es nachvollziehen kann.

Zitat:

Zitat von Incocnito (Beitrag 1494738)
Im TRestClient-Objekt wurde bereits "RaiseOnException500" auf "False" gesetzt,
aber bei anderen HTTP-Codes soll ja auch keine Exception kommen.

Wenn du einmal in den Quelltext geschaut hättest, wenn der Fehler auftritt, hättest du gesehen, dass die Exception hier ausgelöst wird:
Delphi-Quellcode:
  if LResponse.StatusCode >= 300 then
    RaiseProtocolException(LResponse);
Da gibt es keine Bedingung, es passiert also immer.
Die genannte Property sorgt nur dafür, dass die Exception für den einen Fehlercode später abgefangen und unterdrückt statt weiter nach außen geleitet wird.

Da die Methoden auch nicht virtuell sind, könntest du sie nur hart im Speicher verbiegen. Aber ich empfehle die saubere Lösung, sprich wie schon geschrieben die Anzeige der Exceptions einfach zu unterdrücken.

Der schöne Günther 14. Sep 2021 07:48

AW: REST-Client mit 404
 
Was in Delphi nur leider völlig unverständlicherweise weder session- noch projektbasiert ist sondern global.
Heißt: Solange du das nicht von Hand auch wieder ausmachst wird diese Art von Exception nie wieder im Debugger angezeigt. Echt nicht so dolle gelöst.

Incocnito 14. Sep 2021 07:52

AW: REST-Client mit 404
 
Danke für die Info jaenicke,
aber wie Günther schon sagt, an anderer Stelle will ich das ja.
Da muss ich mir wohl etwas anderes einfallen lassen.
Mal schauen, was die Kollegen meinen.

Liebe Grüße
Incocnito

Der schöne Günther 14. Sep 2021 08:58

AW: REST-Client mit 404
 
Zitat:

Außerdem läuft man Gefahr, dass sowas dann beim Kunden landet.
Du arbeitest aber schon mit einer Versionsverwaltung wie z.B. Git, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz