Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 12431|Відповідь: 0

Мікросервіси Gateway Kong використовує плагіни для налаштування повернень помилок

[Копіювати посилання]
Опубліковано 14.02.2019 16:58:19 | | |
Плагін Kong

Плагін Kong підтримує чотири виміри, порядок виконання — від початку до кінця, і слід зазначити, що якщо один і той самий плагін налаштований у різних вимірах, він буде виконаний лише один раз:

  • Застосуйте API плюс споживчий мікс;
  • Застосовується до споживачів;
  • Застосовується в API;
  • Застосовується глобально;

Також не всі плагіни підтримують визначення споживачів

Додайте ще один API для тестування
Додайте новий інтерфейс:


{
    "created_at": 1515055457572,
    "strip_uri": правда,
    "ID": "A99919D1-0770-40A1-81A9-E3C31FD9D282",
    "ім'я": "spring-boot-consul-service2",
    "методи": [
        "ІДИ"
    ],
    "http_if_terminated": неправда,
    "preserve_host": неправда,
    "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
    "uris": [
        "/користувач"
    ],
    "upstream_send_timeout": 60000,
    "upstream_connect_timeout": 60000,
    "upstream_read_timeout": 60000,
    «повторення»: 5,
    "https_only": неправда
}


Додати пари


{
    "created_at": 1515055993113,
    "список замовлень": [
        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",
    "слоти": 100
}


Додайте цілі



Інформація про Тагетс

{
    "загальна": 3,
    "data": [
        {
            "created_at": 1515056103599,
            "ID": "994E7886-3E48-45CB-80AD-3F7918ede007",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e28d4",
            "ціль": "192.168.0.186:17004",
            "Вага": 15
        },
        {
            "created_at": 1515056109570,
            "ID": "03B477EE-A69D-49EE-9892-276F451C373C",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e28d4",
            "ціль": "192.168.0.185:17004",
            "Вага": 15
        },
        {
            "created_at": 1515056112730,
            "ID": "8ace8d83-4504-4334-ad04-f0b536963df9",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e28d4",
            "ціль": "192.168.0.184:17004",
            "Вага": 15
        }
    ]
}


Поточний перелік API виглядає так:

{
    "всього": 2,
    "data": [
        {
            "created_at": 1515055457572,
            "strip_uri": правда,
            "ID": "A99919D1-0770-40A1-81A9-E3C31FD9D282",
            "ім'я": "spring-boot-consul-service2",
            "методи": [
                "ІДИ"
            ],
            "http_if_terminated": неправда,
            "https_only": неправда,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "uris": [
                "/користувач"
            ],
            "preserve_host": неправда,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            «повторення»: 5
        },
        {
            "created_at": 1514995615974,
            "strip_uri": правда,
            "ID": "B8431831-6A77-434E-AC4A-7E379550714F",
            "ім'я": "Spring-boot-Consul-Service",
            "методи": [
                "ІДИ"
            ],
            "http_if_terminated": неправда,
            "https_only": неправда,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "uris": [
                "/service"
            ],
            "preserve_host": неправда,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            «повторення»: 5
        }
    ]
}


Інтерфейси доступу повертають наступне:

{
    "msg": "ок",
    "date": {
        "рахунок": 42,
        "ім'я": "дерево",
        "id": 1,
        "вік": 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "код": 200
}
{
    "msg": "ок",
    "date": {
        "бал": 505,
        "ім'я": "дерево",
        "id": 1,
        "вік": 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "код": 200
}

Додайте плагін Key-Auth

Відкрийте плагін key-auth


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": неправда,
                "run_on_preflight": правда,
                "анонім": "",
                "hide_credentials": неправда,
                "key_names": [
                        "Апікі"
                ]
        },
        "ID": "78C519D3-11F7-4CDF-B038-9F17F1A83427",
        "увімкнено": правда,
        "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
        "ім'я": "key-auth"
}

Потім звернися до інтерфейсу з помилкою так:

ОТРИМАТИВхід за гіперпосиланням видно.
#输出
{
    "повідомлення": "У запиті не знайдено ключа API"
}

Видаліть плагін для автентифікації ключів



Перегляньте плагін для прив'язування API

ОТРИМАТИВхід за гіперпосиланням видно.
# Результат:
{
    "total": 0,
    "data": []
}

Додайте плагін з обмеженням швидкості


Результати

{
    "created_at": 1515068825000,
    "config": {
        "хвилина": 10,
        "policy": "cluster",
        "redis_timeout": 2000,
        "hide_client_headers": неправда,
        "другий": 2,
        "limit_by": "споживач",
        "redis_port": 6379,
        "redis_database": 0,
        "fault_tolerant": правда
    },
    "ID": "482C627F-4041-4320-9B2F-0cc7722B92EA",
    "ім'я": "обмеження швидкості",
    "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "увімкнено": правда
}

Коли інтерфейс доступу перевищує ліміт, будуть отримані наступні результати:


Повернення

{
    "message": "Ліміт швидкості API перевищено"
}

Однак деякі проблеми все ще залишаються, оскільки формат повідомлення фіксований, вихідний формат не відповідає бекенд-сервісу, і необхідно підтримувати власні формати повідомлень.

Kong змінює значення повернення виключення
Наприклад, уніфікований формат повідомлення сервісу виглядає так:

{
    "код": 200,
    "msg": "ок",
        "data": {xxx}
}

Ми також хочемо, щоб повернення винятків у kong залишалося у тому ж форматі, що й вище. Потім ми можемо безпосередньо змінити вихідний код Kong, що насправді дуже просто.

Почніть із завантаження вихідного коду

#下载kong插件源码

git клонgit@github.com:Kong/kong.git

Знайдіть вихідний код для зміни

Вихідний код знаходиться на kong/kong/tools/responses.lua, відкрийте його для редагування.



Збережіть, потім скомпілюйте

[root@tree81 Kong]# Luarocks роблять
kong 0.11.2-0 тепер встановлений у /usr/local (ліцензія: MIT)

Запуск, спробуй ще раз

Швидко оновлюйте адресу кілька разів поспіль:Вхід за гіперпосиланням видно.Отримайте повідомлення про помилку:

{
    "код": 429,
    "msg": "Ліміт швидкості API перевищено"
}

Готово, ідеальний :)




Попередній:jQuery завантажує текст через AJAX
Наступний:init: function () jquery对象的构造函数
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com