Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 12431|Antwort: 0

Microservices Gateway Kong verwendet Plug-ins, um Fehlerrückgaben anzupassen

[Link kopieren]
Veröffentlicht am 14.02.2019 16:58:19 | | |
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:

ERHALTENDer Hyperlink-Login ist sichtbar.
#输出
{
    "message": "Kein API-Schlüssel bei der Anfrage gefunden"
}

Entfernen Sie das Key-Auth-Plugin



Schau dir das API-Bindungs-Plugin an

ERHALTENDer Hyperlink-Login ist sichtbar.
# Ausgabe:
{
    "gesamt": 0,
    "Daten": []
}

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 :)




Vorhergehend:jQuery lädt einen Text über AJAX
Nächster:init: function () jquery对象的构造函数
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com