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 :
Supprimer le plugin de clé d’authentification
Découvre le plugin de liaison API
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 :) |