Heim  >  Artikel  >  Backend-Entwicklung  >  Sequentielle KrakenD-Endpunkt-Fehlerantwort

Sequentielle KrakenD-Endpunkt-Fehlerantwort

PHPz
PHPznach vorne
2024-02-09 08:50:17584Durchsuche

KrakenD 顺序端点错误响应

PHP-Editor Apple bietet Ihnen eine Einführung in die sequenzielle Endpunktfehlerreaktion von KrakenD. KrakenD ist ein leistungsstarkes API-Gateway, bei der Verwendung können jedoch einige Fehler auftreten. Unter diesen ist die sequentielle Endpunktfehlerreaktion ein häufiges Problem. In diesem Artikel werden die Ursachen und Lösungen sequenzieller Endpunktfehlerreaktionen ausführlich erläutert, um Ihnen dabei zu helfen, dieses Problem besser zu lösen und die Stabilität und Leistung des API-Gateways zu verbessern.

Frageninhalt

krakend-Version: 2.2.1 go-Version: go1.19.3

Ich möchte die sequentielle Funktionalität von Krakend nutzen, um sequentielle Anfragen an zwei verschiedene Endpunkte zu senden.

Eine kurze Zusammenfassung meines Falles:

  • Diese beiden Dienste können Erfolg (200) und Fehler (4**) zurückgeben.
  • Wenn der erste Dienst einen Fehler zurückgibt, kann ich diesen Fehler in Postman als Antwort sehen. (Das ist es, was ich will)
  • Wenn der zweite Dienst einen Fehler (4**) zurückgibt, nachdem der erste Dienst erfolgreich war (200), sehe ich eine erfolgreiche Antwort von Postman, während ich darauf warte, dass der vom zweiten Dienst zurückgegebene Fehler angezeigt wird.

Beispiel für einen sequentiellen Endpunkt:

{
   "endpoint": "/companies/validate",
   "method": "GET",
   {{ include "input_headers.txt" }},
   "backend": [
    {
      "host": ["{{ .service.credential_service_url }}"],
      "url_pattern": "/tokens/validate",
      "method": "GET",
      "extra_config": {
         "backend/http": {
            "return_error_code": true
         }
      }
    },
    {
      "host": ["{{ .service.company_service_url }}"],
      "url_pattern": "/companies/{resp0_companyId}/validate",
      "method": "GET",
      "extra_config": {
         "backend/http": {
            "return_error_code": true
         }
      }
    }
   ],
   "extra_config": {
      "proxy": {
         "sequential": true
      }
   }
 }

ide log

Antwort des Postboten

Wie Sie sehen, funktioniert der erste Dienst einwandfrei, der zweite Dienst gibt einen Fehler zurück, aber die Antwort des Postboten gibt einen Erfolg zurück.

Workaround

Dies ist das erwartete Verhalten von KrakenD.

Wenn Sie mehrere Anrufe tätigen, gibt KrakenD alles zurück, was verfügbar ist, zusammen mit einem Statuscode 200, wenn mindestens eine Anfrage erfolgreich ist. Aber im Gegenzug erhalten Sie eine Kopfzeile X-KrakenD-Complete: false, die Ihnen mitteilt, dass etwas fehlgeschlagen ist. Mehr über Aggregation können Sie hier lesen p>

Da Sie einen sequentiellen Proxy verwenden, müssen Sie nichts weiter tun, wenn die erste Anfrage fehlschlägt, da der nächste sequentielle Aufruf automatisch abgebrochen wird. Es schlägt also alles fehl und KrakenD kann nichts zurückgeben, weshalb Sie den gewünschten Fehler erhalten.

Im anderen Fall hat KrakenD etwas zurückzugeben, da der erste Aufruf funktioniert, und Sie erhalten Teildaten.

Sie sollten den Inhalt des X-KrakenD-Complete-Headers Ihres Kunden überprüfen, um zu entscheiden, was zu tun ist

Das obige ist der detaillierte Inhalt vonSequentielle KrakenD-Endpunkt-Fehlerantwort. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen