Maison  >  Article  >  développement back-end  >  Réponse d'erreur de point de terminaison séquentiel KrakenD

Réponse d'erreur de point de terminaison séquentiel KrakenD

PHPz
PHPzavant
2024-02-09 08:50:17584parcourir

KrakenD 顺序端点错误响应

Éditeur php Apple vous propose une introduction à la réponse d'erreur de point de terminaison séquentielle KrakenD. KrakenD est une passerelle API hautes performances, mais vous pouvez rencontrer des erreurs lors de son utilisation. Parmi eux, la réponse séquentielle aux erreurs de point final est un problème courant. Cet article expliquera en détail les causes et les solutions des réponses d'erreur de point de terminaison séquentielles pour vous aider à mieux gérer ce problème et à améliorer la stabilité et les performances de la passerelle API.

Contenu de la question

version Krakend : 2.2.1 version go : go1.19.3

Je souhaite utiliser la fonctionnalité séquentielle de Krakend pour envoyer des requêtes séquentielles à deux points de terminaison différents.

Un bref résumé de mon cas :

  • Ces deux services peuvent renvoyer un succès (200) et une erreur (4**).
  • Si le premier service renvoie une erreur, je peux voir cette erreur dans le facteur en réponse. (C'est ce que je veux)
  • Si le deuxième service renvoie une erreur (4**) après que le premier service ait renvoyé un succès (200), je verrai une réponse réussie de Postman en attendant de voir l'erreur renvoyée par le deuxième service.

Exemple de point de terminaison séquentiel :

{
   "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 journal

Réponse du facteur

Comme vous pouvez le voir, le premier service fonctionne bien, le deuxième service renvoie une erreur, mais la réponse du facteur renvoie un succès.

Solution de contournement

Il s'agit du comportement attendu de KrakenD.

Lorsque vous effectuez plusieurs appels, KrakenD renverra tout ce qui est disponible ainsi qu'un code d'état 200 si au moins une demande réussit. Mais en échange, vous recevez un en-tête X-KrakenD-Complete: false vous indiquant que quelque chose a échoué. Vous pouvez en savoir plus sur l'agrégation ici p>

Puisque vous utilisez un proxy séquentiel, lorsque la première requête échoue, il n'est pas nécessaire de faire autre chose car le prochain appel séquentiel sera automatiquement abandonné. Donc tout échoue et KrakenD ne peut rien retourner, c'est pourquoi vous obtenez l'échec souhaité.

Dans l'autre cas, puisque le premier appel fonctionne, KrakenD a quelque chose à retourner et vous recevez des données partielles.

Vous devez vérifier le contenu de l'en-tête X-KrakenD-Complete de votre client pour décider quoi faire

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer