Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 12431|Atsakyti: 0

"Microservices Gateway Kong" naudoja papildinius, kad tinkintų klaidų grąžinimus

[Kopijuoti nuorodą]
Paskelbta 2019-02-14 16:58:19 | | |
Kongo įskiepis

Kongo papildinys palaiko keturis matmenis, vykdymo tvarka yra iš viršaus į apačią, todėl reikia pažymėti, kad jei tas pats papildinys sukonfigūruotas skirtingais matmenimis, jis bus vykdomas tik vieną kartą:

  • Taikykite API ir vartotojų derinį;
  • Taikoma vartotojams;
  • Taikoma API;
  • Taikoma visame pasaulyje;

Be to, ne visi papildiniai palaiko vartotojų apibrėžimą

Kitos API pridėjimas testavimui
Pridėti naują sąsają:


{
    "created_at": 1515055457572,
    "strip_uri": tiesa,
    "id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "name": "spring-boot-consul-service2",
    "metodai": [
        "GAUTI"
    ],
    "http_if_terminated": klaidinga,
    "preserve_host": klaidinga,
    "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
    "uris": [
        "/vartotojas"
    ],
    "upstream_send_timeout": 60000,
    "upstream_connect_timeout": 60000,
    "upstream_read_timeout": 60000,
    "pakartojimai": 5,
    "https_only": klaidinga
}


Pridėti garus


{
    "created_at": 1515055993113,
    "užsakymų sąrašas": [
        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",
    "Lizdai": 100
}


Tikslų įtraukimas



Tagets informacija

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


Dabartinis API sąrašas yra toks:

{
    "iš viso": 2,
    "duomenys": [
        {
            "created_at": 1515055457572,
            "strip_uri": tiesa,
            "id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
            "name": "spring-boot-consul-service2",
            "metodai": [
                "GAUTI"
            ],
            "http_if_terminated": klaidinga,
            "https_only": klaidinga,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "uris": [
                "/vartotojas"
            ],
            "preserve_host": klaidinga,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "pakartojimai": 5
        },
        {
            "created_at": 1514995615974,
            "strip_uri": tiesa,
            "ID": "B8431831-6A77-434E-AC4A-7E379550714F",
            "name": "spring-boot-consul-service",
            "metodai": [
                "GAUTI"
            ],
            "http_if_terminated": klaidinga,
            "https_only": klaidinga,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "uris": [
                "/paslauga"
            ],
            "preserve_host": klaidinga,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "pakartojimai": 5
        }
    ]
}


Prieigos sąsajos pateikia:

{
    "msg": "gerai",
    "data": {
        "balas": 42,
        "name": "medis",
        "id": 1,
        "amžius": 12 metų,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "kodas": 200
}
{
    "msg": "gerai",
    "data": {
        "balas": 505,
        "name": "medis",
        "id": 1,
        "amžius": 12 metų,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "kodas": 200
}

Pridėkite "Key-Auth" papildinį

Atidarykite rakto autentifikavimo papildinį


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": klaidinga,
                "run_on_preflight": tiesa,
                "anoniminis": "",
                "hide_credentials": klaidinga,
                "key_names": [
                        "apikey"
                ]
        },
        "id": "78c519d3-11f7-4cdf-b038-9f17f1a83427",
        "įjungta": tiesa,
        "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
        "name": "rakto autentifikavimas"
}

Tada pasiekite sąsają su tokia klaida:

PRIEITIHipersaito prisijungimas matomas.
#输出
{
    "message": "Užklausoje nerastas API raktas"
}

Pašalinkite rakto autentifikavimo papildinį



Patikrinkite API susiejimo įskiepį

PRIEITIHipersaito prisijungimas matomas.
# Rezultatas:
{
    "iš viso": 0,
    "duomenys": []
}

Pridėkite greičio ribojimo įskiepio greičio ribojimą


Rezultatas

{
    "created_at": 1515068825000,
    "config": {
        "minutė": 10,
        "policy": "klasteris",
        "redis_timeout": 2000 m.,
        "hide_client_headers": klaidinga,
        "antras": 2,
        "limit_by": "vartotojas",
        "redis_port": 6379,
        "redis_database": 0,
        "fault_tolerant": tiesa
    },
    "id": "482c627f-4041-4320-9b2f-0cc7722b92ea",
    "name": "greičio ribojimas",
    "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "įjungta": teisinga
}

Kai prieigos sąsaja viršija ribą, bus gautos šios grąžos:


Grąžinti

{
    "message": "Viršyta API spartos riba"
}

Tačiau vis dar yra tam tikrų problemų, nes pranešimo formatas yra fiksuotas, išvesties formatas neatitinka vidinės sistemos paslaugos ir reikia palaikyti pasirinktinius pranešimų formatus.

Kongas modifikuoja grąžinamos išimties reikšmę
Pavyzdžiui, tarnybos vieningojo pranešimo formatas yra toks:

{
    "kodas": 200,
    "msg": "gerai",
        "duomenys": {xxx}
}

Taip pat norime, kad kongo išimtis liktų tokio paties formato, kaip ir aukščiau. Tada galime tiesiogiai modifikuoti Kongo šaltinio kodą, o tai iš tikrųjų yra labai paprasta.

Pradėkite nuo šaltinio kodo atsisiuntimo

#下载kong插件源码

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

Raskite modifikuojamą išvesties kodą

Išvesties kodas yra kong/kong/tools/responses.lua, atidarykite jį redaguoti.



Įrašykite, tada kompiliuokite

[root@tree81 kongas]# luarocks padaryti
kong 0.11.2-0 dabar įdiegta /usr/local (licencija: MIT)

Paleiskite, bandykite dar kartą

Greitai atnaujinkite adresą kelis kartus iš eilės:Hipersaito prisijungimas matomas.Gaukite klaidos pranešimą:

{
    "kodas": 429,
    "msg": "Viršyta API spartos riba"
}

Atlikta, tobula :)




Ankstesnis:jQuery įkelia teksto gabalą per AJAX
Kitą:init: function () jquery对象的构造函数
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com