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 条件式
'"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-typetext/jsonapplication/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[]
when

jinja2の表現を利用できます。
プロパティはrequestで定義されたものを使用できます。

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"