ActionやJSONの微調整
ActionAdjustmentProvider
Actionクラスにまつわる色々な挙動を "統一的に" 調整できます。
- 強制404ルーティング対象の指定
- isForced404NotFoundRouting()
- 強制ルーティング除外の指定
- isForcedRoutingExcept()
- 強制ルーティング対象の指定
- isForcedRoutingTarget()
- Actionマッピングの調整
- customizeActionMappingRequestPath()
- 後ろの/不足リダイレクト抑制
- isSuppressTrailingSlashRedirect()
- ルーティング対象なしを404にする?
- isNoRoutingRequestAs404NotFound()
- HTMLパスのフィルタ
- filterHtmlPath()
- HTMLパス探しのリトライ
- prepareHtmlRetryWordList()
- 配列パラメータの上限
- provideIndexedPropertySizeLimit()
- Formのマッピングを調整
- adjustFormMapping()
- ValidatorのConfigを調整
- adjustValidatorConfig()
- ActionResponseの直前調整
- adjustActionResponseJustBefore()
- レスポンスの反映処理を調整
- adjustResponseReflecting()
- 業務例外のハンドリングを調整
- adjustApplicationExceptionHandling()
- ActionのInOutのログを出力する?
- isUseInOutLogging()
- InOutのログを調整する?
- adjustInOutLogging()
Exampleテンプレートとして、MaihamaActionAdjustmentProvider が用意されていますので、そのProviderクラスを直せば有効になります。 (AssistantDirector で登録されています)
強制404ルーティング対象の指定
TODO jflute もうこのURL来たらダメとか、SwaggerUIとかを指定する想定
強制ルーティング除外の指定
TODO jflute JS/APIひとまとめパターンで/api以外は受け付けないというようなとき
強制ルーティング対象の指定
TODO jflute .pdf とか拡張子で終わってるURLもActionで受けたいとき、わりと使う
Actionマッピングの調整
例えば、/jflute/product/list/ というようなURLで、一つ目の要素はユーザ名なのでマッピング判定には含めず、/product/list/ だけで Action を探しに行きたいとき、などに有効です。
e.g. /jflute/product/list/ なら /product/list/ で戻す @Java
public class MaihamaActionAdjustmentProvider implements ActionAdjustmentProvider {
...
@Override
public String customizeActionMappingRequestPath(String requestPath) {
return ... // 先頭の要素を抜いたものを戻す
}
...
}
JSON API で URL にバージョンを入れるような場合(e.g. /api/v1/...)、このメソッドでバージョンを抜き出して filter し、抜き出したバージョンはリクエスト属性に入れるなりして Action に引き継いで利用するとよいでしょう。
後ろの'/'不足リダイレクト抑制
TODO jflute 後ろに'/'がなくてもリダイレクトをしないようにしたければ
ルーティング対象なしを404にする?
TODO jflute Java以外にリソースがなく、404の制御もこちらでやりたい場合など
HTMLパスのフィルタ
TODO jflute HTMLファイルのパスをフィルター、UserAgent見て携帯向けにhookするとか
HTMLパス探しのリトライ
TODO jflute HTMLファイルがなかったときのリトライ調整、これも携帯向けとかで
配列パラメータの上限
TODO jflute リクエストパラメーターの sea[0] の 0 の上限、デフォルトは200くらい
Formのマッピングを調整
TODO jflute Eclipse Collections とか、定義されてないパラメーターあったらエラーとか
ActionResponseの直前調整
TODO jflute 一律、レスポンスHTTPヘッダーに何かを入れるなら
レスポンスの反映処理を調整
ResponseReflectingOptionで、レスポンスの反映処理などを調整できます。
- レスポンスのHtmlBeanのバリデーションエラーを例外出さずに警告ログに
- レスポンスのHtmlBeanのバリデーションエラーを完全に抑制
- レスポンスのJsonResultのバリデーションエラーを例外出さずに警告ログに
- レスポンスのJsonResultのバリデーションエラーを完全に抑制
ValidatorのConfigを調整
TODO jflute Eclipse Collections とか、対応されていない型をバリデーション対象にするとか
業務例外のハンドリングを調整
ApplicationExceptionOptionで、業務例外の扱いを調整できます。
- 強制的に通知ログを抑制したい業務例外を指定できる
ActionのInOutのログを出力する?
トラブル対応のときのために、本番環境でもActionのリクエストとレスポンスの内容を残しておきたい場合は、 LastaFluteにてそれら情報を専用のログファイルに出力することができます(@since LastaFlute-1.0.0)。 (もちろん、若干のパフォーマンス劣化が発生する可能性があるので、不要であればやらないほうが良いです)
JsonResourceProvider
JSONにまつわる色々な挙動を "統一的に" 調整できます。
Exampleテンプレートとして、MaihamaJsonResourceProvider が用意されていますので、そのProviderクラスを直せば有効になります。 (AssistantDirector で登録されています)
- nullの項目を出力しない?
- isnullsSuppressed()
- 改行入りのJSONを出力する?
- isPrettyPrintSuppressed()
- JSONマッピングを調整
- provideMappingOption()
JSONでnullの項目を出力しない?
省略したいときはtrue。
改行入りのJSONを出力する?
デフォルトでは、ローカル開発環境では改行入り、本番では改行なしになっています。
もし、本番でも改行入りにしたいときはtrue。
JSONマッピングを調整
TODO jflute スネークケースとか、Eclipse Collections とか