Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 12431|Svar: 0

Microservices Gateway Kong använder plug-ins för att anpassa felrapporteringar

[Kopiera länk]
Publicerad på 2019-02-14 16:58:19 | | |
Kong-pluginet

Kongs plugin stödjer fyra dimensioner, exekveringsordningen är från topp till botten, och det bör noteras att om samma plugin konfigureras i olika dimensioner kommer det bara att köras en gång:

  • Använd API:n plus konsumentmixen;
  • Tillämpat på konsumenter;
  • Tillämpat i API:et;
  • Tillämpad globalt;

Dessutom stöder inte alla plugins definierande konsumenter

Lägg till ett annat API för testning
Lägg till ett nytt gränssnitt:


{
    "created_at": 1515055457572,
    "strip_uri": Sant,
    "ID": "A99919D1-0770-40A1-81A9-e3C31Fd9D282",
    "namn": "spring-boot-consul-service2",
    "metoder": [
        "GÅ"
    ],
    "http_if_terminated": falskt,
    "preserve_host": falskt,
    "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,
    "återförsök": 5,
    "https_only": falskt
}


Tillsätt ånga


{
    "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",
    "namn": "spring-boot-consul-service2.service.dc1.consul",
    "Slots": 100
}


Lägg till mål



Tagets-information

{
    "total": 3,
    "Data": [
        {
            "created_at": 1515056103599,
            "id": "994e7886-3e48-45cb-80AD-3f7918ede007",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "Mål": "192.168.0.186:17004",
            "vikt": 15
        },
        {
            "created_at": 1515056109570,
            "id": "03b477ee-a69d-49ee-9892-276f451c373c",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "Mål": "192.168.0.185:17004",
            "vikt": 15
        },
        {
            "created_at": 1515056112730,
            "id": "8ace8d83-4504-4334-ad04-f0b536963df9",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "Mål": "192.168.0.184:17004",
            "vikt": 15
        }
    ]
}


Den nuvarande listan över API:er är följande:

{
    "total": 2,
    "Data": [
        {
            "created_at": 1515055457572,
            "strip_uri": Sant,
            "ID": "A99919D1-0770-40A1-81A9-e3C31Fd9D282",
            "namn": "spring-boot-consul-service2",
            "metoder": [
                "GÅ"
            ],
            "http_if_terminated": falskt,
            "https_only": falskt,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "Uris": [
                "/user"
            ],
            "preserve_host": falskt,
            "upstream_connect_timeout": 60 000,
            "upstream_read_timeout": 60 000,
            "upstream_send_timeout": 60 000,
            "Omförsök": 5
        },
        {
            "created_at": 1514995615974,
            "strip_uri": Sant,
            "ID": "B8431831-6A77-434e-ac4A-7E379550714F",
            "namn": "fjäder-stövel-konsul-tjänst",
            "metoder": [
                "GÅ"
            ],
            "http_if_terminated": falskt,
            "https_only": falskt,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "Uris": [
                "/tjänst"
            ],
            "preserve_host": falskt,
            "upstream_connect_timeout": 60 000,
            "upstream_read_timeout": 60 000,
            "upstream_send_timeout": 60 000,
            "Omförsök": 5
        }
    ]
}


Åtkomstgränssnitten returnerar följande:

{
    "msg": "okej",
    "date": {
        "poäng": 42,
        "namn": "träd",
        "id": 1,
        "ålder": 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "kod": 200
}
{
    "msg": "okej",
    "date": {
        "Poäng": 505,
        "namn": "träd",
        "id": 1,
        "ålder": 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "kod": 200
}

Lägg till Key-Auth-pluginet

Öppna key-auth-pluginet


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": falskt,
                "run_on_preflight": Sant,
                "Anonym": "",
                "hide_credentials": falskt,
                "key_names": [
                        "Apikey"
                ]
        },
        "id": "78c519d3-11f7-4cdf-b038-9f17f1a83427",
        "aktiverad": sann,
        "api_id": "A99919D1-0770-40A1-81A9-E3C31fd9d282",
        "namn": "nyckel-autentisering"
}

Sedan går du in i gränssnittet med ett felmeddelande som detta:

Inloggningen med hyperlänken är synlig.
#输出
{
    "message": "Ingen API-nyckel hittad i begäran"
}

Ta bort key-auth-pluginet



Kolla in API-bindningspluginet

Inloggningen med hyperlänken är synlig.
# Resultat:
{
    "total": 0,
    "data": []
}

Lägg till pluginets hastighetsbegränsande hastighetsbegränsning


Produktion

{
    "created_at": 1515068825000,
    "config": {
        "minut": 10,
        "policy": "kluster",
        "redis_timeout": 2000,
        "hide_client_headers": falskt,
        "andra": 2,
        "limit_by": "konsument",
        "redis_port": 6379,
        "redis_database": 0,
        "fault_tolerant": Sant
    },
    "id": "482c627F-4041-4320-9B2F-0CC7722B92EA",
    "namn": "hastighetsbegränsande",
    "api_id": "A99919D1-0770-40A1-81A9-E3C31fd9d282",
    "aktiverad": sant
}

När åtkomstgränssnittet överskrider gränsen kommer följande returer att tas emot:


Återkomst

{
    "meddelande": "API-hastighetsgränsen överskriden"
}

Det finns dock fortfarande vissa problem, eftersom meddelandeformatet är fixat, utdataformatet inte är förenligt med backend-tjänsten och anpassade meddelandeformat måste stödjas.

Kong modifierar undantagsreturvärdet
Till exempel är tjänstens enhetliga meddelandeformat följande:

{
    "kod": 200,
    "msg": "okej",
        "data": {xxx}
}

Vi vill också att undantagsåterlämnandet av Kong ska förbli i samma format som ovan. Sedan kan vi direkt modifiera källkoden till Kong, vilket faktiskt är väldigt enkelt.

Börja med att ladda ner källkoden

#下载kong插件源码

git-klongit@github.com:Kong/kong.git

Hitta utdatakoden att ändra

Utdatakoden finns i kong/kong/tools/responses.lua, öppna den för redigering.



Spara och kompilera sedan

[root@tree81 Kong]# Luarocks gör
kong 0.11.2-0 är nu installerad i /usr/local (licens: MIT)

Starta, försök igen

Uppdatera adressen snabbt flera gånger i rad:Inloggningen med hyperlänken är synlig.Få ett felmeddelande:

{
    "kod": 429,
    "msg": "API-hastighetsgränsen överskriden"
}

Klart, perfekt :)




Föregående:jQuery laddar en text via AJAX
Nästa:init: function () jquery对象的构造函数
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com