Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 12431|Répondre: 0

Microservices Gateway Kong utilise des plug-ins pour personnaliser les retours d’erreur

[Copié le lien]
Publié sur 14/02/2019 16:58:19 | | |
Plugin Kong

Le plugin de Kong prend en charge quatre dimensions, l’ordre d’exécution est de haut en bas, et il convient de noter que si le même plugin est configuré en différentes dimensions, il ne sera exécuté qu’une seule fois :

  • Appliquez l’API plus le mix consommateurs ;
  • Appliqué aux consommateurs ;
  • Appliqué dans l’API ;
  • Appliqué à l’échelle mondiale ;

De plus, tous les plugins ne permettent pas de définir les consommateurs

Ajouter une autre API pour les tests
Ajoutez une nouvelle interface :


{
    « created_at » : 1515055457572,
    « strip_uri » : vrai,
    « id » : « a99919d1-0770-40a1-81a9-e3c31FD9d282 »,
    « nom » : « Spring-boot-consul-service2 »,
    « méthodes » : [
        « DÉGAGE »
    ],
    « http_if_terminated » : faux,
    « preserve_host » : faux,
    « upstream_url » : « http://spring-boot-consul-service2.service.dc1.consul:17004 »,
    « Uris » : [
        « /utilisateur »
    ],
    « upstream_send_timeout » : 60 000,
    « upstream_connect_timeout » : 60 000,
    « upstream_read_timeout » : 60 000,
    « rétractations » : 5,
    « https_only » : faux
}


Ajouter Steams


{
    « created_at » : 1515055993113,
    « liste d’ordres » : [
        41,
        28,
        44,
        14,
        79,
        38,
        30,
        69,
        15,
        88,
        72,
        53,
        89,
        47,
        81,
        43,
        60,
        91,
        92,
        100,
        98,
        55,
        12,
        40,
        9,
        31,
        84,
        24,
        36,
        39,
        96,
        74,
        6,
        8,
        93,
        99,
        78,
        34,
        49,
        37,
        61,
        76,
        33,
        35,
        32,
        77,
        70,
        26,
        52,
        87,
        73,
        23,
        57,
        25,
        17,
        90,
        62,
        82,
        19,
        75,
        50,
        4,
        51,
        42,
        65,
        66,
        63,
        3,
        1,
        68,
        94,
        67,
        20,
        80,
        54,
        7,
        5,
        16,
        85,
        13,
        46,
        10,
        97,
        22,
        48,
        11,
        27,
        86,
        18,
        59,
        83,
        21,
        56,
        95,
        2,
        64,
        58,
        71,
        45,
        29
    ],
    « id » : « 6b8bc38a-d449-47bf-8b8c-19b888e282d4 »,
    « nom » : « spring-boot-consul-service2.service.dc1.consul »,
    « machines à sous » : 100
}


Ajouter des cibles



Informations sur Tagets

{
    « total » : 3,
    « données » : [
        {
            « created_at » : 1515056103599,
            « id » : « 994e7886-3e48-45cb-80AD-3f7918ede007 »,
            « upstream_id » : « 6b8bc38a-d449-47bf-8b8c-19b888e282d4 »,
            « cible » : « 192.168.0.186:17004 »,
            « poids » : 15
        },
        {
            « created_at » : 1515056109570,
            « id » : « 03b477ee-a69d-49ee-9892-276f451c373c »,
            « upstream_id » : « 6b8bc38a-d449-47bf-8b8c-19b888e282d4 »,
            « cible » : « 192.168.0.185:17004 »,
            « poids » : 15
        },
        {
            « created_at » : 1515056112730,
            « id » : « 8ace8d83-4504-4334-ad04-f0b536963df9 »,
            « upstream_id » : « 6b8bc38a-d449-47bf-8b8c-19b888e282d4 »,
            « cible » : « 192.168.0.184:17004 »,
            « poids » : 15
        }
    ]
}


La liste actuelle des API est la suivante :

{
    « total » : 2,
    « données » : [
        {
            « created_at » : 1515055457572,
            « strip_uri » : vrai,
            « id » : « a99919d1-0770-40a1-81a9-e3c31FD9d282 »,
            « nom » : « Spring-boot-consul-service2 »,
            « méthodes » : [
                « DÉGAGE »
            ],
            « http_if_terminated » : faux,
            « https_only » : faux,
            « upstream_url » : « http://spring-boot-consul-service2.service.dc1.consul:17004 »,
            « Uris » : [
                « /utilisateur »
            ],
            « preserve_host » : faux,
            « upstream_connect_timeout » : 60 000,
            « upstream_read_timeout » : 60 000,
            « upstream_send_timeout » : 60 000,
            « rétractions » : 5
        },
        {
            « created_at » : 1514995615974,
            « strip_uri » : vrai,
            « id » : « b8431831-6a77-434e-ac4a-7e379550714f »,
            « nom » : « Spring-boot-consul-service »,
            « méthodes » : [
                « DÉGAGE »
            ],
            « http_if_terminated » : faux,
            « https_only » : faux,
            « upstream_url » : « http://spring-boot-consul-service.service.dc1.consul:17003 »,
            « Uris » : [
                « /service »
            ],
            « preserve_host » : faux,
            « upstream_connect_timeout » : 60 000,
            « upstream_read_timeout » : 60 000,
            « upstream_send_timeout » : 60 000,
            « rétractions » : 5
        }
    ]
}


Les interfaces d’accès renvoient ce qui suit :

{
    « MSG » : « OK »,
    « date » : {
        « score » : 42,
        « nom » : « arbre »,
        « id » : 1,
        « âge » : 12,
        « nowTime » : 1515060166929,
        « info » : « /checkUser, host :192.168.0.186, service_id :application-1700417004 »
    },
    « code » : 200
}
{
    « MSG » : « OK »,
    « date » : {
        « score » : 505,
        « nom » : « arbre »,
        « id » : 1,
        « âge » : 12,
        « nowTime » : 1515060402392,
        « info » : « /checkUser, host :192.168.0.184, service_id :application-1700317003 »
    },
    « code » : 200
}

Ajouter le plugin Key-Auth

Ouvre le plugin key-auth


{
        « created_at » : 1515066239000,
        « config » : {
                « key_in_body » : faux,
                « run_on_preflight » : vrai,
                « anonyme » : « »,
                « hide_credentials » : faux,
                « key_names » : [
                        « apikey »
                ]
        },
        « id » : « 78c519d3-11f7-4cdf-b038-9f17f1a83427 »,
        « activé » : vrai,
        « api_id » : « a99919d1-0770-40a1-81a9-e3c31FD9d282 »,
        « nom » : « clé-auth »
}

Puis accédez à l’interface avec une erreur comme celle-ci :

AVOIRLa connexion hyperlientérée est visible.
#输出
{
    « message » : « Aucune clé API trouvée dans la requête »
}

Supprimer le plugin de clé d’authentification



Découvre le plugin de liaison API

AVOIRLa connexion hyperlientérée est visible.
# Sortie :
{
    « total » : 0,
    « données » : []
}

Ajouter le plugin limitant le débit


Sortie

{
    « created_at » : 1515068825000,
    « config » : {
        « minute » : 10,
        « politique » : « cluster »,
        « redis_timeout » : 2000,
        « hide_client_headers » : faux,
        « deuxième » : 2,
        « limit_by » : « consommateur »,
        « redis_port » : 6379,
        « redis_database » : 0,
        « fault_tolerant » : vrai
    },
    « id » : « 482c627F-4041-4320-9B2F-0cc7722B92EA »,
    « nom » : « limitation de taux »,
    « api_id » : « a99919d1-0770-40a1-81a9-e3c31FD9d282 »,
    « activé » : vrai
}

Lorsque l’interface d’accès dépasse la limite, les résultats suivants seront reçus :


Retour

{
    « message » : « Limite de débit API dépassée »
}

Cependant, il subsiste certains problèmes, car le format du message est fixe, le format de sortie n’est pas cohérent avec le service backend, et des formats de message personnalisés doivent être pris en charge.

Kong modifie la valeur de retour d’exception
Par exemple, le format unifié des messages du service est le suivant :

{
    « code » : 200,
    « MSG » : « OK »,
        « data » : {xxx}
}

Nous voulons également que le retour d’exception du Kong reste dans le même format que ci-dessus. Ensuite, nous pouvons modifier directement le code source de Kong, ce qui est en réalité très simple.

Commencez par télécharger le code source

#下载kong插件源码

clone de gitgit@github.com:Kong/kong.git

Localiser le code de sortie à modifier

Le code de sortie se trouve dans kong/kong/tools/responses.lua, ouvrez-le pour édition.



Sauvegarder, puis compiler

[root@tree81 Kong]# Les luarocks font
Kong 0.11.2-0 est désormais installé dans /usr/local (licence : MIT)

Lancement, réessaie

Rafraîchissez rapidement l’adresse plusieurs fois de suite :La connexion hyperlientérée est visible.Message d’erreur :

{
    « code » : 429,
    « msg » : « Limite de débit API dépassée »
}

Fait, parfait :)




Précédent:jQuery charge un texte via AJAX
Prochain:init: function () jquery对象的构造函数
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com