Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 12431|Odgovoriti: 0

Microservices Gateway Kong uporablja vtičnike za prilagajanje vrnitve napak

[Kopiraj povezavo]
Objavljeno na 14. 02. 2019 16:58:19 | | |
Kong vtičnik

Kongov vtičnik podpira štiri dimenzije, vrstni red izvajanja je od zgoraj navzdol, in treba je poudariti, da če je isti vtičnik konfiguriran v različnih dimenzijah, bo izveden le enkrat:

  • Uporabite API plus potrošniški miks;
  • Uporabljeno za potrošnike;
  • Uporabljeno v API-ju;
  • Uporabljeno globalno;

Prav tako vsi vtičniki ne podpirajo definiranja potrošnikov

Dodajte še en API za testiranje
Dodajte nov vmesnik:


{
    "created_at": 1515055457572,
    "strip_uri": resnično,
    "ID": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "ime": "spring-boot-consul-service2",
    "Metode": [
        "POJDI"
    ],
    "http_if_terminated": napačno,
    "preserve_host": napačno,
    "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
    "uris": [
        "/uporabnik"
    ],
    "upstream_send_timeout": 60000,
    "upstream_connect_timeout": 60000,
    "upstream_read_timeout": 60000,
    "poskusi": 5,
    "https_only": lažno
}


Dodaj ssteam


{
    "created_at": 1515055993113,
    "Seznam naročil": [
        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",
    "ime": "spring-boot-consul-service2.service.dc1.consul",
    "Sloti": 100
}


Dodaj cilje



Informacije o tagetsu

{
    "skupaj": 3,
    "podatki": [
        {
            "created_at": 1515056103599,
            "ID": "994e7886-3e48-45CB-80AD-3f7918EDE007",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "cilj": "192.168.0.186:17004",
            "teža": 15
        },
        {
            "created_at": 1515056109570,
            "ID": "03B477EE-A69D-49EE-9892-276F451C373C",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "cilj": "192.168.0.185:17004",
            "teža": 15
        },
        {
            "created_at": 1515056112730,
            "ID": "8ace8d83-4504-4334-ad04-f0b536963df9",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "cilj": "192.168.0.184:17004",
            "teža": 15
        }
    ]
}


Trenutni seznam API-jev je naslednji:

{
    "skupaj": 2,
    "podatki": [
        {
            "created_at": 1515055457572,
            "strip_uri": resnično,
            "ID": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
            "ime": "spring-boot-consul-service2",
            "Metode": [
                "POJDI"
            ],
            "http_if_terminated": napačno,
            "https_only": napačno,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "uris": [
                "/uporabnik"
            ],
            "preserve_host": napačno,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "ponovitve": 5
        },
        {
            "created_at": 1514995615974,
            "strip_uri": resnično,
            "ID": "b8431831-6a77-434e-ac4a-7e379550714f",
            "ime": "vzmetni škornji-konzul-služba",
            "Metode": [
                "POJDI"
            ],
            "http_if_terminated": napačno,
            "https_only": napačno,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "uris": [
                "/service"
            ],
            "preserve_host": napačno,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "ponovitve": 5
        }
    ]
}


Dostopni vmesniki vračajo naslednje:

{
    "sporočilo": "v redu",
    "date": {
        "rezultat": 42,
        "ime": "drevo",
        "id": 1,
        "starost": 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "koda": 200
}
{
    "sporočilo": "v redu",
    "date": {
        "rezultat": 505,
        "ime": "drevo",
        "id": 1,
        "starost": 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "koda": 200
}

Dodajte vtičnik Key-Auth

Odpri vtičnik za avtentikacijo ključa


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": napačno,
                "run_on_preflight": resnično,
                "anonimno": "",
                "hide_credentials": napačno,
                "key_names": [
                        "Apikey"
                ]
        },
        "ID": "78c519d3-11f7-4cdf-b038-9f17f1a83427",
        "omogočeno": resnično,
        "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
        "ime": "key-auth"
}

Nato dostopajte do vmesnika z napako, kot je ta:

DOBITIPrijava do hiperpovezave je vidna.
#输出
{
    "message": "V zahtevi ni najdenega API ključa"
}

Odstranite vtičnik za avtentrikacijo ključev



Oglejte si vtičnik za vezavo API-ja

DOBITIPrijava do hiperpovezave je vidna.
# Izhod:
{
    "skupaj": 0,
    "podatki": []
}

Dodaj vtičnik za omejevanje hitrosti


Izhod

{
    "created_at": 1515068825000,
    "config": {
        "minuta": 10,
        "politika": "grozd",
        "redis_timeout": 2000,
        "hide_client_headers": napačno,
        "drugi": 2,
        "limit_by": "potrošnik",
        "redis_port": 6379,
        "redis_database": 0,
        "fault_tolerant": resnično
    },
    "ID": "482C627F-4041-4320-9B2F-0cc7722B92EA",
    "ime": "omejujoče hitrosti",
    "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "omogočeno": resnično
}

Ko dostopni vmesnik preseže omejitev, se prejmejo naslednji odgovori:


Vrnitev

{
    "sporočilo": "Presežen je omejitev API hitrosti"
}

Vendar pa še vedno obstajajo nekatere težave, saj je format sporočil fiksn, izhodni format ni skladen s storitvijo v ozadju, zato je treba podpirati prilagojene oblike sporočil.

Kong spremeni vrednost vrnjene izjeme
Na primer, format združenega sporočila storitve je naslednji:

{
    "koda": 200,
    "sporočilo": "v redu",
        "data": {xxx}
}

Prav tako želimo, da izjema vračila Konga ostane v istem formatu kot zgoraj. Nato lahko neposredno spremenimo izvorno kodo Konga, kar je pravzaprav zelo preprosto.

Začnite s prenosom izvorne kode

#下载kong插件源码

git clonegit@github.com:Kong/kong.git

Poiščite izhodno kodo za spremembo

Izhodna koda se nahaja v kong/kong/tools/responses.lua, odpri jo za urejanje.



Shrani, nato prevedi

[root@tree81 Kong]# Luarocks naredijo
Kong 0.11.2-0 je zdaj nameščen v /usr/local (licenca: MIT)

Zaženi, poskusi znova

Hitro osvežite naslov večkrat zaporedoma:Prijava do hiperpovezave je vidna.Prejmete sporočilo o napaki:

{
    "koda": 429,
    "msg": "Prekoračitev omejitve API hitrosti"
}

Končano, popolno :)




Prejšnji:jQuery naloži besedilo preko AJAX
Naslednji:init: function () jquery对象的构造函数
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com