Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 12431|Yanıt: 0

Microservices Gateway Kong, hata dönüşlerini özelleştirmek için eklentiler kullanır

[Bağlantıyı kopyala]
Yayınlandı 14.02.2019 16:58:19 | | |
Kong eklentisi

Kong'un eklentisi dört boyut destekler, yürütme sırası yukarıdan aşağıya ve aynı eklenti farklı boyutlarda yapılandırılırsa sadece bir kez çalıştırılacağı belirtilmelidir:

  • API ve tüketici karışımını uygulayın;
  • Tüketicilere uygulanmıştır;
  • API'de uygulanmıştır;
  • Küresel olarak uygulanmıştır;

Ayrıca, tüm eklentiler tüketici tanımlamayı desteklemez

Test için başka bir API ekleyin
Yeni bir arayüz ekleyin:


{
    "created_at": 1515055457572,
    "strip_uri": doğru,
    "ID": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "isim": "spring-boot-consul-service2",
    "yöntemler": [
        "AL"
    ],
    "http_if_terminated": yanlış,
    "preserve_host": yanlış,
    "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
    "uris": [
        "/kullanıcı"
    ],
    "upstream_send_timeout": 60000,
    "upstream_connect_timeout": 60000,
    "upstream_read_timeout": 60000,
    "Denemeler": 5,
    "https_only": yanlış
}


Buhar ekle


{
    "created_at": 1515055993113,
    "Sipariş Listesi": [
        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",
    "isim": "spring-boot-consul-service2.service.dc1.consol",
    "slotlar": 100
}


Hedefler ekle



Tagets bilgisi

{
    "toplam": 3,
    "veri": [
        {
            "created_at": 1515056103599,
            "id": "994e7886-3e48-45cb-80AD-3f7918ede007",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "hedef": "192.168.0.186:17004",
            "ağırlık": 15
        },
        {
            "created_at": 1515056109570,
            "ID": "03B477ee-A69D-49ee-9892-276F451C373C",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "hedef": "192.168.0.185:17004",
            "ağırlık": 15
        },
        {
            "created_at": 1515056112730,
            "ID": "8ACE8D83-4504-4334-AD04-F0B536963DF9",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "hedef": "192.168.0.184:17004",
            "ağırlık": 15
        }
    ]
}


Mevcut API listesi aşağıdaki gibidir:

{
    "toplam": 2,
    "veri": [
        {
            "created_at": 1515055457572,
            "strip_uri": doğru,
            "ID": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
            "isim": "spring-boot-consul-service2",
            "yöntemler": [
                "AL"
            ],
            "http_if_terminated": yanlış,
            "https_only": yanlış,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "uris": [
                "/kullanıcı"
            ],
            "preserve_host": yanlış,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "Denemeler": 5
        },
        {
            "created_at": 1514995615974,
            "strip_uri": doğru,
            "ID": "B8431831-6A77-434E-AC4A-7E379550714F",
            "isim": "yay-bot-konsol-hizmeti",
            "yöntemler": [
                "AL"
            ],
            "http_if_terminated": yanlış,
            "https_only": yanlış,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "uris": [
                "/servis"
            ],
            "preserve_host": yanlış,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "Denemeler": 5
        }
    ]
}


Erişim arayüzleri aşağıdaki sonuçları geri getirir:

{
    "mesaj": "tamam",
    "date": {
        "Puan": 42,
        "isim": "ağaç",
        "id": 1,
        "yaş": 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "kod": 200
}
{
    "mesaj": "tamam",
    "date": {
        "puan": 505,
        "isim": "ağaç",
        "id": 1,
        "yaş": 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "kod": 200
}

Key-Auth eklentisini ekle

Key-auth eklentisini aç


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": yanlış,
                "run_on_preflight": doğru,
                "anonim": "",
                "hide_credentials": yanlış,
                "key_names": [
                        "apikey"
                ]
        },
        "id": "78c519d3-11f7-4cdf-b038-9f17f1a83427",
        "etkinleştirildi": doğru,
        "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
        "isim": "key-auth"
}

Sonra arayüzü şu şekilde bir hatayla açın:

ALBağlantı girişi görünür.
#输出
{
    "message": "İstekte API anahtarı bulunmadı"
}

Key-aut eklentisini kaldırın



API bağlama eklentisine göz atın

ALBağlantı girişi görünür.
# Çıktı:
{
    "toplam": 0,
    "veri": []
}

Hız sınırlayıcı eklenti hız sınırlayıcısını ekleyin


Çıktı

{
    "created_at": 1515068825000,
    "config": {
        "dakika": 10,
        "politika": "küme",
        "redis_timeout": 2000,
        "hide_client_headers": yanlış,
        "ikinci": 2,
        "limit_by": "tüketici",
        "redis_port": 6379,
        "redis_database": 0,
        "fault_tolerant": doğru
    },
    "ID": "482c627f-4041-4320-9b2f-0cc7722b92ea",
    "isim": "hız sınırlayıcı",
    "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "etkinleştirildi": doğru
}

Erişim arayüzü sınırı aştığında, aşağıdaki ifadeler alınacaktır:


Dönüş

{
    "message": "API hız sınırı aşıldı"
}

Ancak, mesaj formatı sabitlendiği, çıktı formatının arka uç hizmetiyle tutarlı olmadığı ve özel mesaj formatlarının desteklenmesi gerektiği için bazı sorunlar hâlâ vardır.

Kong, istisna dönüş değerini değiştiriyor
Örneğin, servisin birleşik mesaj formatı şu şekildedir:

{
    "kod": 200,
    "mesaj": "tamam",
        "data": {xxx}
}

Ayrıca Kong'un istisna dönüşünün yukarıdaki formatta kalmasını istiyoruz. Sonra Kong'un kaynak kodunu doğrudan değiştirebiliriz, ki bu aslında çok basit.

Kaynak kodunu indirerek başlayın

#下载kong插件源码

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

Değiştirmek için çıktı kodunu bulun

Çıktı kodu kong/kong/tools/responses.lua adresinde bulunuyor, düzenleme için açın.



Kaydet, sonra derle

[root@tree81 kong]# luarocks
Kong 0.11.2-0 artık /usr/local (lisans: MIT) içinde kuruludur

Fırlat, tekrar dene

Adresi arka arkaya birkaç kez hızlıca yenileyin:Bağlantı girişi görünür.Bir hata mesajı alın:

{
    "kod": 429,
    "msg": "API hız sınırı aşıldı"
}

Bitti, mükemmel :)




Önceki:jQuery, AJAX üzerinden bir metin parçası yükler
Önümüzdeki:init: function () jquery对象的构造函数
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com