이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 12431|회답: 0

마이크로서비스 게이트웨이 콩은 플러그인을 사용하여 오류 반환을 맞춤화합니다

[링크 복사]
게시됨 2019. 2. 14. 오후 4:58:19 | | |
콩 플러그인

Kong의 플러그인은 4차원을 지원하며, 실행 순서는 위에서 아래로 정렬되어 있습니다. 동일한 플러그인이 다른 차원으로 설정되어 있을 경우 한 번만 실행된다는 점을 유의해야 합니다:

  • 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",
    "우리스": [
        "/사용자"
    ],
    "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,
    "데이터": [
        {
            "created_at": 1515056103599,
            "ID": "994E7886-3E48-45CB-80AD-3F7918EDE007",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "타겟": "192.168.0.186:17004",
            "무게": 15
        },
        {
            "created_at": 1515056109570,
            "ID": "03B477ee-A69D-49ee-9892-276F451C373C",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "목표": "192.168.0.185:17004",
            "무게": 15
        },
        {
            "created_at": 1515056112730,
            "ID": "8ace8D83-4504-4334-AD04-F0B536963df9",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b888e282d4",
            "타겟": "192.168.0.184:17004",
            "무게": 15
        }
    ]
}


현재 API 목록은 다음과 같습니다:

{
    "총합": 2,
    "데이터": [
        {
            "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",
            "우리스": [
                "/사용자"
            ],
            "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",
            "이름": "스프링 부트-영사-서비스",
            "방법": [
                "가"
            ],
            "http_if_terminated": 거짓,
            "https_only": 거짓,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "우리스": [
                "/서비스"
            ],
            "preserve_host": 거짓,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            "재시도": 5회
        }
    ]
}


접근 인터페이스는 다음과 같은 결과를 반환합니다:

{
    "MSG": "알겠습니다",
    "데이트": {
        "점수": 42,
        "이름": "나무",
        "id": 1,
        "나이": 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    "코드": 200
}
{
    "MSG": "알겠습니다",
    "데이트": {
        "점수": 505,
        "이름": "나무",
        "id": 1,
        "나이": 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    "코드": 200
}

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",
        "이름": "키-인증"
}

그 후 다음과 같은 오류가 발생하여 인터페이스에 접근합니다:

가져오기하이퍼링크 로그인이 보입니다.
#输出
{
    "메시지": "요청에서 API 키를 찾지 못했습니다"
}

키 인증 플러그인을 제거하세요



API 바인딩 플러그인을 확인해 보세요

가져오기하이퍼링크 로그인이 보입니다.
# 출력:
{
    "총합": 0,
    "데이터": []
}

속도 제한 플러그인 속도 제한 추가로


출력

{
    "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",
    "enabled": 참
}

접근 인터페이스가 한계를 초과하면 다음과 같은 반환이 수신됩니다:


귀환

{
    "메시지": "API 속도 한도 초과"
}

하지만 메시지 형식이 고정되어 있고, 출력 형식이 백엔드 서비스와 일치하지 않으며, 맞춤형 메시지 형식이 지원되어야 하는 문제점도 여전히 존재합니다.

Kong은 예외 반환 값을 수정합니다
예를 들어, 서비스 통합 메시지 형식은 다음과 같습니다:

{
    "코드": 200,
    "MSG": "알겠습니다",
        "데이터": {xxx}
}

또한 콩의 예외 반환도 위와 같은 형식으로 유지되길 원합니다. 그다음 콩의 소스 코드를 직접 수정할 수 있는데, 사실 매우 간단합니다.

먼저 소스 코드를 다운로드하세요

#下载kong插件源码

git 클론git@github.com:콩/콩.git

수정할 출력 코드를 찾아

출력 코드는 kong/kong/tools/responses.lua에 있으니 편집을 위해 열어보세요.



저장 후 컴파일

[root@tree81 콩]# 루아록스 메이크
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