【パーサー設定】

はじめに

このページでは、REST-API サーバーにおける パーサー設定ファイル の仕様について解説します。

パーサー設定は、HTTP リクエストの Content-Type に応じてボディ部をどのように解析するか を決定する重要な設定です。

SOCKET-MANAGER Framework では、標準実装として以下の Content-Type に対応するパーサーがデフォルト登録されています。
  • application/json
  • application/xml
  • application/x-www-form-urlencoded

なお、設定ファイル名は固定ではなく、メイン処理クラスの $setting_files['parser'] プロパティにより任意の名称を指定できます。

メイン処理クラスでの設定方法は ▶メイン処理クラス実装(設定ファイル指定) を参照してください。

設定ファイルの構造

パーサー設定ファイルは、return によって Content-Type → パーサークラス名 のマッピングを返す形式で記述します。

主な役割は次の通りです。
  • Content-Type に応じて使用するパーサークラスを指定する
  • 標準パーサーを別のクラスに差し替える
  • 新しい Content-Type に対応するパーサーを追加する

標準実装のパーサー


application/json

JSON 形式のボディを配列に変換します。

処理内容(JsonParser)
  • json_decode() により JSON → 配列へ変換

application/xml

XML 形式のボディを配列に変換します。

処理内容(XmlParser)
  • simplexml_load_string() で XML を読み込み
  • JSON 経由で配列化

application/x-www-form-urlencoded

URL エンコード形式のボディを配列に変換します。

処理内容(UrlencodedParser)
  • parse_str() により URL エンコード → 配列へ変換

カスタムパーサーの作成

標準パーサーでは対応できないケースでは、独自のパーサークラスを作成できます。

例:属性値を配列に変換したい場合
<sample>
    <data list="0,1,2,3"></data>
</sample>
                    

このような特殊な構造を扱う場合は、独自のパーサークラスを作成し、 設定ファイルで Content-Type に紐付けることで利用できます。

パーサークラスの作成方法は ▶パーサークラス実装 を参照してください。

Content-Type の追加

標準で登録されていない Content-Type(例:application/yaml など)を扱いたい場合も、 独自パーサーを作成して設定ファイルに追加するだけで対応できます。

スキャフォールディング(CLI)

パーサー設定ファイルは CLI コマンドで自動生成できます。
php worker custom:setting-parser <カスタム名>
                    

  • <カスタム名> は任意のファイル名を指定できます。
  • 生成したファイルはメイン処理クラス側で設定可能です。
  • 同名ファイルが存在する場合は警告して終了します。
<プロジェクトルート>/setting/
                    

おわりに

このページでは、REST-API サーバーにおける パーサー設定ファイルの仕様 を解説しました。

標準パーサーの利用から独自パーサーの作成まで、柔軟な拡張が可能です。

より詳細なパーサーの実装方法については ▶パーサークラス実装 を参照してください。