【パーサー設定】
はじめに
このページでは、REST-API サーバーにおける パーサー設定ファイル の仕様について解説します。
パーサー設定は、HTTP リクエストの Content-Type に応じてボディ部をどのように解析するか を決定する重要な設定です。
SOCKET-MANAGER Framework では、標準実装として以下の Content-Type に対応するパーサーがデフォルト登録されています。
なお、設定ファイル名は固定ではなく、メイン処理クラスの
メイン処理クラスでの設定方法は ▶メイン処理クラス実装(設定ファイル指定) を参照してください。
パーサー設定は、HTTP リクエストの Content-Type に応じてボディ部をどのように解析するか を決定する重要な設定です。
SOCKET-MANAGER Framework では、標準実装として以下の Content-Type に対応するパーサーがデフォルト登録されています。
application/jsonapplication/xmlapplication/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 エンコード → 配列へ変換
カスタムパーサーの作成
標準パーサーでは対応できないケースでは、独自のパーサークラスを作成できます。
例:属性値を配列に変換したい場合
このような特殊な構造を扱う場合は、独自のパーサークラスを作成し、 設定ファイルで Content-Type に紐付けることで利用できます。
パーサークラスの作成方法は ▶パーサークラス実装 を参照してください。
例:属性値を配列に変換したい場合
<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 サーバーにおける パーサー設定ファイルの仕様 を解説しました。
標準パーサーの利用から独自パーサーの作成まで、柔軟な拡張が可能です。
より詳細なパーサーの実装方法については ▶パーサークラス実装 を参照してください。
標準パーサーの利用から独自パーサーの作成まで、柔軟な拡張が可能です。
より詳細なパーサーの実装方法については ▶パーサークラス実装 を参照してください。