Spring Boot 19 CORSを許可する
Spring Bootで実装したAPIを、異なるドメインのページからAjaxで呼び出した際に以下のエラーが発生し、Ajax側がこけます。
No 'Access-Control-Allow-Origin' header is present on the requested resource.
セキュリティ上、異なるドメインをAjaxで呼び出す場合はヘッダに色々と情報を詰める必要があるようです。 下記記事を参考に、SimpleCORSFilterを実装しました。 qiita.com
これで、異なるドメインからの呼び出しも大丈夫になりました。
JavaScriptはクライアントサイドなので改ざんされる恐れがあるとはいえ、Serverサイドに許可設定を記載したらOKになるというのも、セキュリティ上不思議な気がします。
Java CamelCaseとsnake_case
Spring Bootの実装時に微妙に困ったことです。
Javaは基本的にCamelCaseです。
JSONはsnake_caseです。
リクエスト、レスポンスの対象名が微妙に異なります。
Jacksonの機能を利用することで、ある程度は自動化できるようです。
qiita.com
しかし、Sprong BootでValidationのエラー対象名にはJavaの変数名で格納されています。
調べましたが、自動変換が発見できませんでした。
エラー時のレスポンスに対象名とメッセージを格納したいだけだったので、格納時に変換メソッドを呼ぶようにしました。
変換メソッドは下記を参考にしました。
qiita.com
JSONの対象名でエラーメッセージが表示されるようになりました。