Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 12431|Răspunde: 0

Microservices Gateway Kong folosește plug-in-uri pentru a personaliza returnările de erori

[Copiază linkul]
Postat pe 14.02.2019 16:58:19 | | |
Plugin Kong

Pluginul lui Kong suportă patru dimensiuni, ordinea execuției este de sus în jos, și trebuie menționat că, dacă același plugin este configurat în dimensiuni diferite, va fi executat o singură dată:

  • Aplică API-ul plus mixul consumatorilor;
  • Aplicat consumatorilor;
  • Aplicat în API;
  • Aplicat la nivel global;

De asemenea, nu toate pluginurile suportă definirea consumatorilor

Adaugă un alt API pentru testare
Adaugă o interfață nouă:


{
    "created_at": 1515055457572,
    "strip_uri": adevărat,
    "id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "nume": "cizmă-primă-consul-serviciu2",
    "metode": [
        "PLEACĂ"
    ],
    "http_if_terminated": fals,
    "preserve_host": fals,
    "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
    "uris": [
        "/user"
    ],
    "upstream_send_timeout": 60000,
    "upstream_connect_timeout": 60000,
    "upstream_read_timeout": 60000,
    "înfrângeri": 5,
    "https_only": fals
}


Adaugă Steam


{
    "created_at": 1515055993113,
    "lista de ordine": [
        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",
    "nume": "spring-boot-consul-service2.service.dc1.consul",
    "sloturi": 100
}


Adaugă ținte



Informații despre Tagets

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


Lista actuală a API-urilor este următoarea:

{
    "total": 2,
    "date": [
        {
            "created_at": 1515055457572,
            "strip_uri": adevărat,
            "id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
            "nume": "cizmă-primă-consul-serviciu2",
            "metode": [
                "PLEACĂ"
            ],
            "http_if_terminated": fals,
            "https_only": fals,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "uris": [
                "/user"
            ],
            "preserve_host": fals,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "încercări": 5
        },
        {
            "created_at": 1514995615974,
            "strip_uri": adevărat,
            "id": "b8431831-6a77-434e-ac4a-7e379550714f",
            "Nume": "Spring-Boot-Consul-Service",
            "metode": [
                "PLEACĂ"
            ],
            "http_if_terminated": fals,
            "https_only": fals,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "uris": [
                "/serviciu"
            ],
            "preserve_host": fals,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "încercări": 5
        }
    ]
}


Interfețele de acces returnează următoarele:

{
    "MSG": "OK",
    "data": {
        "scor": 42,
        "nume": "copac",
        "id": 1,
        "vârstă": 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "cod": 200
}
{
    "MSG": "OK",
    "data": {
        "scor": 505,
        "nume": "copac",
        "id": 1,
        "vârstă": 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "cod": 200
}

Adaugă pluginul Key-Auth

Deschide pluginul key-auth


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": fals,
                "run_on_preflight": adevărat,
                "anonim": "",
                "hide_credentials": fals,
                "key_names": [
                        "apikey"
                ]
        },
        "id": "78c519d3-11f7-4cdf-b038-9f17f1a83427",
        "activat": adevărat,
        "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
        "nume": "key-auth"
}

Apoi accesează interfața cu o eroare de genul aceasta:

OBȚINEAutentificarea cu hyperlink este vizibilă.
#输出
{
    "message": "Nicio cheie API găsită în solicitare"
}

Elimină pluginul de autentificare



Verifică pluginul de legătură API

OBȚINEAutentificarea cu hyperlink este vizibilă.
# Ieșire:
{
    "total": 0,
    "date": []
}

Adaugă limitarea ratei pluginului de limitare a ratei


Producție

{
    "created_at": 1515068825000,
    "config": {
        "minute": 10,
        "politică": "cluster",
        "redis_timeout": 2000,
        "hide_client_headers": fals,
        "al doilea": 2,
        "limit_by": "consumator",
        "redis_port": 6379,
        "redis_database": 0,
        "fault_tolerant": adevărat
    },
    "id": "482c627f-4041-4320-9b2f-0cc7722b92ea",
    "nume": "limitare a ratei",
    "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "activat": adevărat
}

Când interfața de acces depășește limita, vor fi primite următoarele returnări:


Întoarcerea

{
    "message": "Limita de rată API depășită"
}

Totuși, există totuși unele probleme, deoarece formatul mesajului este fix, formatul de ieșire nu este consistent cu serviciul backend și trebuie suportate formate personalizate de mesaj.

Kong modifică valoarea returnării excepțiilor
De exemplu, formatul unificat al mesajului serviciului este următorul:

{
    "cod": 200,
    "MSG": "OK",
        "date": {xxx}
}

De asemenea, dorim ca returnarea excepțiilor pentru Kong să rămână în același format ca mai sus. Apoi putem modifica direct codul sursă al lui Kong, ceea ce este de fapt foarte simplu.

Începe prin a descărca codul sursă

#下载kong插件源码

Clonă Gitgit@github.com:Kong/kong.git

Localizează codul de ieșire de modificat

Codul de ieșire se află în kong/kong/tools/responses.lua, deschide-l pentru editare.



Salvează, apoi compilează

[root@tree81 Kong]# Luarocks fac
Kong 0.11.2-0 este acum instalat în /USR/Local (licență: MIT)

Lansare, încearcă din nou

Reîmprospătează rapid adresa de mai multe ori la rând:Autentificarea cu hyperlink este vizibilă.Primesc un mesaj de eroare:

{
    "cod": 429,
    "msg": "Limita de rată API depășită"
}

Gata, perfectă :)




Precedent:jQuery încarcă o bucată de text prin AJAX
Următor:init: function () jquery对象的构造函数
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com