昨日は@77webさんのSymfony4.4正式リリース前に4.4.x-devで開発し始めたプロジェクトを4.4.0正式版にアップデートするでした。ptyhard/JsonSchemaBundleptyhard/JsonSchemaBundleを作りました。読んで刺激を受けて、作り始めました。Validationができるかと思います。Platformでもサポートしているようです。Doctrineとべったりな感じが個人的にはあまり好きにはなれません。ptyhard/JsonSchemaBundleのコンセプトJsonSchemaをアノテーションで表現する入力値をクラスにマッピングするこの2つの機能を実現するために作っています。JsonSchemaをアノテーションで表現するptyhard/JsonSchemaBundleはjsonSchemaをAnnotationで表現できます。ArrayPropertyCollectionPropertyNumberPropertyObjectPropertyStringPropertyをサポートしています。}}入力値をオブジェクトにマッピングするクライアントから送信されたデータをオブジェクトにマッピングします。コントローラのアクションの引数にスキーマを定義したクラスを指定すれば勝手にマッピングされるようになっています。}}上記のようにUserクラスを引数で渡せば実行時にオブジェクトに値をマッピングします。requestクラスからめんどくさいオブジェクトへの値マッピングの実装をしなくていいので便利ですよね。ファイルを指定することもできるスキーマ定義のjsonファイルをを用意している場合には@SchemaFileを使ってバリデーションを行う事もできます。public/json_schemaのディレクトリにschema.jsonを入れてもらいクラスファイルに以下のように書いてください。それから、Controllerのアクションに利用するjsonSchemaのファイルを指定します。}}jsonのファイルを置く位置を変更することもできます。'/public/schema'レスポンスする値を検証するレスポンスする値に対してバリデーションを行う事もできます。場合は戻り地の型がSchemaObjectのAnnotationがあるオブジェクトであれば勝手にバリデーションします。(オブジェクトになっているのでバリデーションいらない気もしますが)@SchemaFile場合は設定が必要になります。以下のようにAnnotationに記述すればレスポンスする値も検証できます。type={"response"})このようにtypeにrequest,responseを定義すると指定したタイミングでバリデーションができます。組み合わせ使いましたが、なかなかの使いやすさがありました。Requestいただけたら嬉しいです。