Skip to content

res2res

APIから返却されたレスポンスを判定前に変換します。

json

レスポンスをJSONに変換します。
任意の変換ロジックを指定することができます。

Config

Definitions

Root
Key Type Description Example Default
transformer Transformer 変換処理
default_encoding (string) レスポンスヘッダにエンコーディング情報が無い場合の出力エンコーディング euc-jp utf8
when str jinja2の式に準拠した条件式
'"2" in req.path'

whenで指定できるプロパティ

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-typetext/jsonapplication/json でない場合はレスポンスがJSONでないとみなされ処理がスキップされます。

Config

Definitions

Root
Key Type Description Example Default
items Sorter[] ソート設定のリスト
Sorter
Key Type Description Example Default
conditions RequestCondition[] 本設定を反映させるRequestの条件
and_or (AndOr) conditionsをAND/ORどちらで判定するか and
negative (bool) 否定条件とするか true false
targets Target[]
AndOr
Name Description
and AND条件
or OR条件
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:
        - conditions:
            - path:
                items:
                  - regexp: /filter
          targets:
            - path: root<'dict1'><'list1-1'> 
pathが/filterである場合 list2 のリストをid, nameの優先順にソートする
res2res:
  - name: json_sort
    config:
      items:
        - conditions:
            - path:
                items:
                  - regexp: /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 jinja2の式に準拠した条件式
"res.status_code == 200"

whenで指定できるプロパティ

key Type Description
req Request リクエスト情報
res Response レスポンス情報

Examples

pathにtargetという文字列が含まれる場合にjsonへtypeを変更する
res2res:
  - name: type
    config:
      conditions:
        - type: json
          when: "'target' in req.path"