Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 12431|Respuesta: 0

Microservices Gateway Kong utiliza complementos para personalizar los retornos de error

[Copiar enlace]
Publicado en 14/2/2019 16:58:19 | | |
Plugin Kong

El plugin de Kong soporta cuatro dimensiones, el orden de ejecución es de arriba a abajo, y cabe señalar que si el mismo plugin está configurado en diferentes dimensiones, solo se ejecutará una vez:

  • Aplica la API más la mezcla de consumidores;
  • Aplicado a consumidores;
  • Aplicado en la API;
  • Aplicado a nivel global;

Además, no todos los plugins soportan definir consumidores

Añadir otra API para pruebas
Añadir una nueva interfaz:


{
    "created_at": 1515055457572,
    "strip_uri": cierto,
    "id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "nombre": "cônsul-cônsul-servicio2",
    "métodos": [
        "VETE"
    ],
    "http_if_terminated": falso,
    "preserve_host": falso,
    "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
    "uris": [
        "/usuario"
    ],
    "upstream_send_timeout": 60000,
    "upstream_connect_timeout": 60000,
    "upstream_read_timeout": 60000,
    "reprisas": 5,
    "https_only": falso
}


Añadir vapores


{
    "created_at": 1515055993113,
    "Lista de Órdenes": [
        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",
    "nombre": "spring-boot-consul-service2.service.dc1.consul",
    "Slots": 100
}


Añadir objetivos



Información de Tagets

{
    "total": 3,
    "datos": [
        {
            "created_at": 1515056103599,
            "id": "994e7886-3e48-45cb-80AD-3F7918ede007",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "objetivo": "192.168.0.186:17004",
            "peso": 15
        },
        {
            "created_at": 1515056109570,
            "id": "03b477ee-a69d-49ee-9892-276f451c373c",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "objetivo": "192.168.0.185:17004",
            "peso": 15
        },
        {
            "created_at": 1515056112730,
            "id": "8ace8d83-4504-4334-ad04-f0b536963df9",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "objetivo": "192.168.0.184:17004",
            "peso": 15
        }
    ]
}


La lista actual de APIs es la siguiente:

{
    "total": 2,
    "datos": [
        {
            "created_at": 1515055457572,
            "strip_uri": cierto,
            "id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
            "nombre": "cônsul-cônsul-servicio2",
            "métodos": [
                "VETE"
            ],
            "http_if_terminated": falso,
            "https_only": falso,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "uris": [
                "/usuario"
            ],
            "preserve_host": falso,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "reintentos": 5
        },
        {
            "created_at": 1514995615974,
            "strip_uri": cierto,
            "id": "b8431831-6a77-434e-ac4a-7e379550714f",
            "nombre": "servicio cónsul-botas-resorte",
            "métodos": [
                "VETE"
            ],
            "http_if_terminated": falso,
            "https_only": falso,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "uris": [
                "/servicio"
            ],
            "preserve_host": falso,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "reintentos": 5
        }
    ]
}


Las interfaces de acceso devuelven lo siguiente:

{
    "MSG": "Vale",
    "fecha": {
        "puntuación": 42,
        "nombre": "árbol",
        "id": 1,
        "edad": 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "código": 200
}
{
    "MSG": "Vale",
    "fecha": {
        "puntuación": 505,
        "nombre": "árbol",
        "id": 1,
        "edad": 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "código": 200
}

Añadir el plugin de Key-Auth

Abre el plugin de autenticación de teclas


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": falso,
                "run_on_preflight": cierto,
                "anónimo": "",
                "hide_credentials": falso,
                "key_names": [
                        "apikey"
                ]
        },
        "id": "78c519d3-11f7-4cdf-b038-9f17f1a83427",
        "habilitado": cierto,
        "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
        "nombre": "key-auth"
}

Luego accede a la interfaz con un error como este:

OBTENEREl inicio de sesión del hipervínculo es visible.
#输出
{
    "message": "No se ha encontrado ninguna clave API en la solicitud"
}

Elimina el plugin de autenticación de teclas



Echa un vistazo al plugin de vinculación de API

OBTENEREl inicio de sesión del hipervínculo es visible.
# Salida:
{
    "total": 0,
    "datos": []
}

Añadir el limitador de velocidad de los plugins limitadores de velocidad


Producción

{
    "created_at": 1515068825000,
    "config": {
        "minuto": 10,
        "política": "cluster",
        "redis_timeout": 2000,
        "hide_client_headers": falso,
        "segundo": 2,
        "limit_by": "consumidor",
        "redis_port": 6379,
        "redis_database": 0,
        "fault_tolerant": cierto
    },
    "id": "482c627f-4041-4320-9b2f-0cc7722b92ea",
    "nombre": "limitador de tasas",
    "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    "habilitado": verdadero
}

Cuando la interfaz de acceso supere el límite, se recibirán las siguientes declaraciones:


Devolución

{
    "message": "Límite de tasa API superado"
}

Sin embargo, todavía existen algunos problemas, ya que el formato de mensaje es fijo, el formato de salida no es consistente con el servicio de backend y es necesario soportar formatos de mensaje personalizados.

Kong modifica el valor de retorno de excepción
Por ejemplo, el formato unificado de mensaje del servicio es el siguiente:

{
    "código": 200,
    "MSG": "Vale",
        "data": {xxx}
}

También queremos que la devolución de excepción del Kong siga en el mismo formato que antes. Entonces podemos modificar directamente el código fuente de Kong, que en realidad es muy sencillo.

Empieza descargando el código fuente

#下载kong插件源码

Clon de Gitgit@github.com:Kong/kong.git

Localiza el código de salida para modificar

El código de salida está en kong/kong/tools/responses.lua, ábrelo para editarlo.



Guarda y luego compila

[root@tree81 Kong]# Los luarocks hacen
Kong 0.11.2-0 está ahora instalado en /usr/local (licencia: MIT)

Lanza, inténtalo de nuevo

Actualiza rápidamente la dirección varias veces seguidas:El inicio de sesión del hipervínculo es visible.Recibe un mensaje de error:

{
    "código": 429,
    "msg": "Límite de tasa API superado"
}

Hecho, perfecto :)




Anterior:jQuery carga un texto vía AJAX
Próximo:init: function () jquery对象的构造函数
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com