この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 12431|答える: 0

マイクロサービスGateway Kongはプラグインを使ってエラーリターンをカスタマイズします

[リンクをコピー]
掲載地 2019/02/14 16:58:19 | | |
Kongプラグイン

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」: 「OK」
    「デート」:{
        「スコア」:42、
        「名前」:「木」、
        「id」:1、
        「年齢」:12歳、
        「nowTime」:1515060166929、
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    「コード」:200
}
{
    「msg」: 「OK」
    「デート」:{
        「スコア」: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」
        「Enabled」:真、
        「api_id」: 「a99919d1-0770-40a1-81a9-e3c31FD9d282」
        「名前」:「キー認証」
}

次に、次のようなエラーでインターフェースにアクセスします:

取得ハイパーリンクのログインが見えます。
#输出
{
    "メッセージ":「リクエストにAPIキーが見つかりません」
}

キー認証プラグインを削除してください



APIバインディングプラグインをチェックしてみてください

取得ハイパーリンクのログインが見えます。
# アウトプット:
{
    「total」: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」
    「有効」:真
}

アクセスインターフェースが制限を超えると、以下の返答結果が受信されます:


帰還

{
    「メッセージ」:「APIレート制限超過」
}

しかし、メッセージ形式が固定されていること、出力形式がバックエンドサービスと一貫していないこと、カスタムメッセージ形式のサポートなど、いくつかの問題が残っています。

Kongは例外の返り値を修正します
例えば、サービス統一メッセージの形式は以下の通りです:

{
    「コード」:200、
    「msg」: 「OK」
        「データ」:{xxx}
}

また、コンの例外返還も上記のフォーマットのままにしたいと考えています。 そして、実際に非常に簡単な方法でKongのソースコードを直接変更できます。

まずはソースコードをダウンロードしてください

#下载kong插件源码

Git クローンgit@github.com:Kong/kong.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