Плагін 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
Додайте плагін з обмеженням швидкості
Результати
{ "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 перевищено"
} Готово, ідеальний :) |