res2res ¶
APIから返却されたレスポンスを判定前に変換します。
json¶
レスポンスをJSONに変換します。
任意の変換ロジックを指定することができます。
Config¶
Definitions¶
Root¶
Key | Type | Description | Example | Default |
---|---|---|---|---|
transformer | Transformer | 変換処理 | ||
default_encoding | (string) | レスポンスヘッダにエンコーディング情報が無い場合の出力エンコーディング | euc-jp | utf8 |
when | str | 条件式 | '"2" in req.path' |
whenで指定できるプロパティ
Template表記に対応しています。
プロパティは以下を使用できます。
key | Type | Description |
---|---|---|
req | Request | リクエスト情報 |
res | Response | レスポンス情報 |
Transformer¶
Key | Type | Description | Example | Default |
---|---|---|---|---|
module | string | 変換処理のあるモジュールのパス | sample.module | |
function | (string) | 変換処理の関数 | bytes2json | transform |
functionのインタフェース
functionで指定した関数のインタフェースは(bytes, str) -> str
となる必要があります。
以下は実装の一例です。
def transform(anything: bytes, encoding: str) -> str:
return json.dumps({
"wrap": load_json(anything.decode(encoding))
}, ensure_ascii=False)
Examples¶
sample
モジュールのtransform
関数を使ってjsonに変換する¶
res2res:
- name: json
config:
transformer:
module: sample
sample
モジュールのbytes2json
関数を使ってjsonに変換する¶
res2res:
- name: json
config:
transformer:
module: sample
function: bytes2json
pathにjsonを含む場合だけsample
モジュールのtransform
関数を使ってjsonに変換する¶
res2res:
- name: json
config:
transformer:
module: sample
when: '"sample" in req.path'
json_sort¶
JSONレスポンスの並び順をソートします。
処理がスキップされるケース
content-type
が text/json
や application/json
でない場合はレスポンスがJSONでないとみなされ処理がスキップされます。
Config¶
Definitions¶
Root¶
Key | Type | Description | Example | Default |
---|---|---|---|---|
items | Sorter[] | ソート設定のリスト | ||
footprints_tag | (string) | 本アドオンで結果が変わったときに足跡として追加するタグ名 | sorted |
Sorter¶
Key | Type | Description | Example | Default |
---|---|---|---|---|
when | str | 条件式 | "qs.id.0 == 1" |
|
targets | Target[] |
Target¶
Key | Type | Description | Example | Default |
---|---|---|---|---|
path | string | ソート対象となるプロパティの正規表現 | root<'dict1'><'list1-1'> | |
sort_keys | (string[]) | pathで指定したプロパティがObjectだった場合のソートプロパティリスト | [id, name] |
sort_keys
が未指定の場合
指定プロパティの値でソートします。Objectの場合はJson Encodeした結果でソートします。
Examples¶
pathが/filter
である場合 dict1.list1-1
のリストをソートする¶
res2res:
- name: json_sort
config:
items:
- when: "path == '/filter'"
targets:
- path: root<'dict1'><'list1-1'>
pathが/filter
である場合 list2
のリストをid, nameの優先順にソートする¶
res2res:
- name: json_sort
config:
items:
- when: "path == '/filter'"
targets:
- path: root<'list2'>
sort_keys: [id, name]
type¶
レスポンスのtypeを変更します。
typeはJumeauxのアドオンや連携先アプリケーションでファイル形式を判定するために使用されます。
Config¶
Definitions¶
Root¶
Key | Type | Description | Example | Default |
---|---|---|---|---|
conditions | Condition[] | 変更値と条件 |
Condition¶
Key | Type | Description | Example | Default |
---|---|---|---|---|
type | str | 変更後のtype | json | |
when | str | 条件式 | "res.status_code == 200" |
whenで指定できるプロパティ
Template表記に対応しています。
プロパティは以下を使用できます。
key | Type | Description |
---|---|---|
req | Request | リクエスト情報 |
res | Response | レスポンス情報 |
Examples¶
pathにtarget
という文字列が含まれる場合にjson
へtypeを変更する¶
res2res:
- name: type
config:
conditions:
- type: json
when: "'target' in req.path"