旧バージョンのドキュメントを参照しています。 最新のドキュメントはこちらをご参照ください。
kong.service.response
サービスからの応答を操作するためのモジュール。
kong.service.response.get_status()
サービスからのレスポンスの HTTP ステータス コードを Lua の数値として返します。
フェーズ
-
header_filter,body_filter,log
戻り値
-
number|nil:サービスからの応答からのステータスコード、またはnilリクエストがプロキシされなかった場合(つまり、kong.response.get_source()が"service"以外の何かを返した場合)。
使用法
kong.log.inspect(kong.service.response.get_status()) -- 418
kong.service.response.get_headers([max_headers])
サービスレスポンスのヘッダーを保持する Lua テーブルを返します。キーはヘッダー名です。値はヘッダー値を含む文字列か、ヘッダーが複数回送信された場合は文字列の配列になります。この表のヘッダー名は大文字と小文字は区別されず、ダッシュ(-)はアンダースコア(_)を使って書くことができます。つまり、ヘッダー X-Custom-Header は x_custom_header として取得することもできます。
この関数は、kong.response.get_headers()とは異なり、サービスからの応答に含まれるヘッダーのみを返します(Kongによって追加されるヘッダーは無視されます)。リクエストがサービスにプロキシされていない場合(認証プラグインでリクエストが拒否され、HTTP401応答が生成される場合など)、サービスから一切応答がないため、nilがheadersの値として返される可能性があります。
デフォルトでは、この関数は最大 100 個のヘッダーを返します。オプションで max_headers 引数を指定してこの制限をカスタマイズできますが、 1 より大きく 1000 以下である必要があります。
フェーズ
-
header_filter,body_filter,log
パラメータ
-
max_headers (
number, オプション ): 解析可能なヘッダーの最大数の制限を設定します。
戻り値
-
table:テーブル形式の応答ヘッダー。 -
string:max_headersを超えるヘッダーが存在する場合は、 エラー"truncated"のある文字列を返します。
使用法
-- Given a response with the following headers:
-- X-Custom-Header: bla
-- X-Another: foo bar
-- X-Another: baz
local headers = kong.service.response.get_headers()
if headers then
kong.log.inspect(headers.x_custom_header) -- "bla"
kong.log.inspect(headers.x_another[1]) -- "foo bar"
kong.log.inspect(headers["X-Another"][2]) -- "baz"
end
Note that this function returns a proxy table
which cannot be iterated with `pairs` or used as operand of `#`.
kong.service.response.get_header(name)
指定したレスポンスヘッダーの値を返します。
kong.response.get_header() とは異なり、サービスからのレスポンスにヘッダーが含まれる場合(Kong
によって追加されたヘッダーは無視されます)、この関数はヘッダー
のみを返します。
フェーズ
-
header_filter,body_filter,log
パラメータ
-
name (
string): ヘッダーの名前。ヘッダー名は大文字と小文字を区別せず、小文字に正規化されています。また、ダッシュ(
-)はアンダースコア(_)を使って書くことができます。つまり、ヘッダーX-Custom-Headerはx_custom_headerとして取得することもできます。
戻り値
-
string|nil:ヘッダーの値、または応答内にnameを含むヘッダーが見つからない場合はnil。同じ名前のヘッダーが応答内に複数回存在する場合、この関数はこのヘッダーの最初に出現した値を返します。
使用法
-- Given a response with the following headers:
-- X-Custom-Header: bla
-- X-Another: foo bar
-- X-Another: baz
kong.log.inspect(kong.service.response.get_header("x-custom-header")) -- "bla"
kong.log.inspect(kong.service.response.get_header("X-Another")) -- "foo bar"
kong.service.response.get_raw_body()
バッファリングされた未加工の本体を返します。
フェーズ
-
header_filter,body_filter,log
戻り値
-
string: バッファリングされた未加工のボディ。
使用法
-- Plugin needs to call kong.service.request.enable_buffering() on `rewrite`
-- or `access` phase prior calling this function.
local body = kong.service.response.get_raw_body()
kong.service.response.get_body([mimetype[,max_args]])
デコードされバッファリングされた本体を返します。
フェーズ
-
header_filter,body_filter,log
パラメータ
-
mimetype (
string、 オプション ): レスポンスの MIME タイプ(既知の場合)。 -
max_args (
number、 オプション ): 解析可能な(what?)の上限数を設定します。
戻り値
-
string: デコードおよびバッファリングされたボディ
使用法
-- Plugin needs to call kong.service.request.enable_buffering() on `rewrite`
-- or `access` phase prior calling this function.
local body = kong.service.response.get_body()