Kong-Plugin
Kongs Plugin unterstützt vier Dimensionen, die Ausführungsreihenfolge ist von oben nach unten, und es sollte beachtet werden, dass dasselbe Plugin nur einmal ausgeführt wird, wenn es in verschiedenen Dimensionen konfiguriert ist:
- Wenden Sie die API plus den Consumer-Mix an;
- Angewandt auf Verbraucher;
- Angewendet in der API;
- Global angewendet;
Außerdem unterstützen nicht alle Plugins definierende Konsumenten
Fügen Sie eine weitere API zum Testen hinzu Fügen Sie eine neue Benutzeroberfläche hinzu:
{ "created_at": 1515055457572, "strip_uri": wahr, "id": "a99919d1-0770-40a1-81a9-e3c31fd9d282", "name": "spring-boot-consul-service2", "Methoden": [ "LOS" ], "http_if_terminated": falsch, "preserve_host": falsch, "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004", "uris": [ "/user" ], "upstream_send_timeout": 60.000, "upstream_connect_timeout": 60.000, "upstream_read_timeout": 60.000, "Wiederholungen": 5, "https_only": falsch
}
Dampf hinzufügen
{ "created_at": 1515055993113, "Orderlist": [ 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", "name": "spring-boot-consul-service2.service.dc1.consul", "Slots": 100
}
Ziele hinzufügen
TAGETS-Informationen
{ "gesamt": 3, "Daten": [ { "created_at": 1515056103599, "id": "994e7886-3e48-45CB-80AD-3f7918ede07", "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4", "Ziel": "192.168.0.186:17004", "Gewicht": 15 }, { "created_at": 1515056109570, "id": "03b477ee-a69d-49ee-9892-276f451c373c", "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4", "Ziel": "192.168.0.185:17004", "Gewicht": 15 }, { "created_at": 1515056112730, "id": "8ace8d83-4504-4334-ad04-f0b536963df9", "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4", "Ziel": "192.168.0.184:17004", "Gewicht": 15 } ]
}
Die aktuelle Liste der APIs ist wie folgt:
{ "gesamt": 2, "Daten": [ { "created_at": 1515055457572, "strip_uri": wahr, "id": "a99919d1-0770-40a1-81a9-e3c31fd9d282", "name": "spring-boot-consul-service2", "Methoden": [ "LOS" ], "http_if_terminated": falsch, "https_only": falsch, "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004", "uris": [ "/user" ], "preserve_host": falsch, "upstream_connect_timeout": 60.000, "upstream_read_timeout": 60.000, "upstream_send_timeout": 60.000, "Wiederholungen": 5 }, { "created_at": 1514995615974, "strip_uri": wahr, "id": "b8431831-6a77-434e-ac4a-7e379550714f", "Name": "Feder-Stiefel-Konsul-Dienst", "Methoden": [ "LOS" ], "http_if_terminated": falsch, "https_only": falsch, "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003", "uris": [ "/dienst" ], "preserve_host": falsch, "upstream_connect_timeout": 60.000, "upstream_read_timeout": 60.000, "upstream_send_timeout": 60.000, "Wiederholungen": 5 } ]
}
Die Zugriffsschnittstellen geben Folgendes zurück:
{ "MSG": "OK", "Date": { "Punktzahl": 42, "Name": "Baum", "id": 1, "Alter": 12, "nowTime": 1515060166929, "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004" }, "Code": 200
} { "MSG": "OK", "Date": { "Punktzahl": 505, "Name": "Baum", "id": 1, "Alter": 12, "nowTime": 1515060402392, "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003" }, "Code": 200
} Füge das Key-Auth-Plugin hinzu
Öffne das Key-Auth-Plugin
{ "created_at": 1515066239000, "config": { "key_in_body": falsch, "run_on_preflight": wahr, "anonym": "", "hide_credentials": falsch, "key_names": [ "apikey" ] }, "id": "78c519d3-11f7-4cdf-b038-9f17f1a83427", "aktiviert": wahr, "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282", "name": "key-auth"
} Dann greifen Sie mit einem Fehler wie diesem auf die Schnittstelle zu:
Entfernen Sie das Key-Auth-Plugin
Schau dir das API-Bindungs-Plugin an
Fügen Sie das ratelimitierende Plugin Rate-limiting hinzu
Ausgabe
{ "created_at": 1515068825000, "config": { "Minute": 10, "Politik": "Cluster", "redis_timeout": 2000, "hide_client_headers": falsch, "zweite": 2, "limit_by": "Verbraucher", "redis_port": 6379, "redis_database": 0, "fault_tolerant": Wahr }, "id": "482C627F-4041-4320-9B2F-0CC7722B92EA", "name": "tarifbegrenzend", "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282", "aktiviert": wahr
} Wenn die Zugriffsschnittstelle das Limit überschreitet, werden folgende Rückgaben empfangen:
Rückgabe
{ "nachricht": "API-Rate-Limit überschritten"
} Es gibt jedoch weiterhin einige Probleme, da das Nachrichtenformat festgelegt ist, das Ausgabeformat nicht mit dem Backend-Dienst konsistent ist und benutzerdefinierte Nachrichtenformate unterstützt werden müssen.
Kong modifiziert den Ausnahme-Rückgabewert Zum Beispiel ist das einheitliche Nachrichtenformat des Dienstes wie folgt:
{ "Code": 200, "MSG": "OK", "data": {xxx}
} Wir möchten außerdem, dass die Ausnahme-Rückgabe von Kong im gleichen Format wie oben bleibt. Dann können wir den Quellcode von Kong direkt modifizieren, was eigentlich sehr einfach ist.
Beginnen Sie damit, den Quellcode herunterzuladen
#下载kong插件源码
Git-Klongit@github.com:Kong/kong.git
Finden Sie den Ausgabecode zum Ändern
Der Ausgabecode befindet sich in kong/kong/tools/responses.lua, öffnen Sie ihn zum Bearbeiten.
Speichere, dann kompiliere
[root@tree81 Kong]# Luarocks machen Kong 0.11.2-0 ist jetzt in /usr/local installiert (Lizenz: MIT) Starten, nochmal versuchen
Aktualisieren Sie die Adresse mehrmals hintereinander schnell:Der Hyperlink-Login ist sichtbar.Erhalten Sie eine Fehlermeldung:
{ "Code": 429, "msg": "API-Rate-Limit überschritten"
} Fertig, perfekt :) |