Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 12431|Risposta: 0

Microservices Gateway Kong utilizza plug-in per personalizzare i ritorni di errore

[Copiato link]
Pubblicato su 14/02/2019 16:58:19 | | |
Plugin Kong

Il plugin di Kong supporta quattro dimensioni, l'ordine di esecuzione è dall'alto verso il basso, e va notato che se lo stesso plugin è configurato in dimensioni diverse, verrà eseguito solo una volta:

  • Applica l'API più il mix dei consumatori;
  • Applicato ai consumatori;
  • Applicato nell'API;
  • Applicato a livello globale;

Inoltre, non tutti i plugin supportano la definizione dei consumatori

Aggiungi un'altra API per i test
Aggiungi una nuova interfaccia:


{
    "created_at": 1515055457572,
    "strip_uri": vero,
    "id": "a99919d1-0770-40a1-81a9-e3c31FD9d282",
    "nome": "stivale-molle-console-servizio2",
    "metodi": [
        "VIA"
    ],
    "http_if_terminated": falso,
    "preserve_host": falso,
    "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
    "uris": [
        "/utente"
    ],
    "upstream_send_timeout": 60000,
    "upstream_connect_timeout": 60000,
    "upstream_read_timeout": 60000,
    "ripetizioni": 5,
    "https_only": falso
}


Aggiungi Steam


{
    "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",
    "nome": "molle-stivale-consule-servizio2.servizio.dc1.consul",
    "slot": 100
}


Aggiungi obiettivi



Informazioni di Tagets

{
    "totale": 3,
    "dati": [
        {
            "created_at": 1515056103599,
            "id": "994e7886-3e48-45cb-80AD-3F7918ede007",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "obiettivo": "192.168.0.186:17004",
            "peso": 15
        },
        {
            "created_at": 1515056109570,
            "id": "03b477ee-a69d-49ee-9892-276f451c373c",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "bersaglio": "192.168.0.185:17004",
            "peso": 15
        },
        {
            "created_at": 1515056112730,
            "id": "8ace8d83-4504-4334-ad04-f0b536963df9",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "bersaglio": "192.168.0.184:17004",
            "peso": 15
        }
    ]
}


L'elenco attuale delle API è il seguente:

{
    "totale": 2,
    "dati": [
        {
            "created_at": 1515055457572,
            "strip_uri": vero,
            "id": "a99919d1-0770-40a1-81a9-e3c31FD9d282",
            "nome": "stivale-molle-console-servizio2",
            "metodi": [
                "VIA"
            ],
            "http_if_terminated": falso,
            "https_only": falso,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "uris": [
                "/utente"
            ],
            "preserve_host": falso,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "ripetiti": 5
        },
        {
            "created_at": 1514995615974,
            "strip_uri": vero,
            "id": "b8431831-6a77-434e-ac4a-7e379550714f",
            "nome": "spring-boot-console-service",
            "metodi": [
                "VIA"
            ],
            "http_if_terminated": falso,
            "https_only": falso,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "uris": [
                "/service"
            ],
            "preserve_host": falso,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "ripetiti": 5
        }
    ]
}


Le interfacce di accesso restituiscono quanto segue:

{
    "MSG": "OK",
    "date": {
        "Punteggio": 42,
        "nome": "albero",
        "id": 1,
        "età": 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "codice": 200
}
{
    "MSG": "OK",
    "date": {
        "Punteggio": 505,
        "nome": "albero",
        "id": 1,
        "età": 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "codice": 200
}

Aggiungi il plugin Key-Auth

Apri il plugin key-auth


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": falso,
                "run_on_preflight": vero,
                "anonimo": "",
                "hide_credentials": falso,
                "key_names": [
                        "apikey"
                ]
        },
        "id": "78c519d3-11f7-4cdf-b038-9f17f1a83427",
        "abilitato": vero,
        "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
        "nome": "key-auth"
}

Poi accedi all'interfaccia con un errore come questo:

OTTIENIIl login del link ipertestuale è visibile.
#输出
{
    "message": "Nessuna chiave API trovata nella richiesta"
}

Rimuovi il plugin di autenticazione della chiave



Dai un'occhiata al plugin di binding API

OTTIENIIl login del link ipertestuale è visibile.
# Output:
{
    "totale": 0,
    "dati": []
}

Aggiungi il limite di velocità del plugin di limitazione di velocità


Output

{
    "created_at": 1515068825000,
    "config": {
        "minuto": 10,
        "politica": "cluster",
        "redis_timeout": 2000,
        "hide_client_headers": falso,
        "secondo": 2,
        "limit_by": "consumatore",
        "redis_port": 6379,
        "redis_database": 0,
        "fault_tolerant": vero
    },
    "id": "482c627f-4041-4320-9b2f-0cc7722b92ea",
    "name": "limitante di tasso",
    "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "abilitato": vero
}

Quando l'interfaccia di accesso supera il limite, verranno ricevute le seguenti dichiarazioni:


Ritorno

{
    "message": "Limite di velocità API superato"
}

Tuttavia, ci sono ancora alcuni problemi, perché il formato del messaggio è fisso, il formato di uscita non è coerente con il servizio backend e devono essere supportati formati di messaggio personalizzati.

Kong modifica il valore di ritorno delle eccezioni
Ad esempio, il formato unificato dei messaggi del servizio è il seguente:

{
    "codice": 200,
    "MSG": "OK",
        "data": {xxx}
}

Vogliamo anche che il ritorno eccezionale del Kong rimanga nello stesso formato di quanto sopra. Poi possiamo modificare direttamente il codice sorgente di Kong, che in realtà è molto semplice.

Inizia scaricando il codice sorgente

#下载kong插件源码

Clone gitgit@github.com:Kong/kong.git

Individua il codice di output da modificare

Il codice di output si trova in kong/kong/tools/responses.lua, aprilo per la modifica.



Salva, poi compila

[root@tree81 Kong]# I Luarock fanno
Kong 0.11.2-0 è ora installato in /USR/Local (licenza: MIT)

Avvio, riprova

Aggiorna rapidamente l'indirizzo più volte di seguito:Il login del link ipertestuale è visibile.Ricevo un messaggio di errore:

{
    "codice": 429,
    "msg": "Limite di velocità API superato"
}

Fatto, perfetto :)




Precedente:jQuery carica un testo tramite AJAX
Prossimo:init: function () jquery对象的构造函数
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com