SpringMVCのyamlデータ交換フォーマット実現
1361 ワード
SpringMVCのyamlデータ交換フォーマット実現
よく知られているようにspring mvcのデフォルトはjson/xmlデータ交換フォーマットをサポートしていますが、ymlでフロントバックグラウンドデータ交換をするとどうなりますか?次に、Spring MVCに新しいデータ交換フォーマットとアプリケーションを登録する方法について説明します.
yamlメッセージ変換器の実装
yamlはspringに対応する変換器がないので、再実装する必要があります.ソースコードリファレンスYamlMessageConverterは、まず、使用するMIME-TYPEを変換器に登録するコンストラクタを定義する必要があります.ここで登録しない場合、要求は406を返し、spring mvcはログ出力がなく、これは誤り訂正に不利であり、spring mvc内部には
mvcコンテナにメッセージ変換器を登録する
次に、WebMvcConfigurerAdapterにメッセージ変換器を登録し、次の2つの方法で変換器の登録を行います. を解析する. を参照することができる.
コントローラでconsume MediaTypeを指定 consumes:インタフェースが受信可能なリクエストデータ型、フロントのajaxリクエストに対応するcontentType produces:インタフェースが返すリクエストデータ型、対応フロントのacceptリクエストヘッダブラウザのスクリーンショットおよび解釈は以下の通りである: フロントの書き方
参照ファイルindex.jsp
すべてのソースは私のGithub倉庫を参照してください:https://github.com/Crabime/coding
よく知られているようにspring mvcのデフォルトはjson/xmlデータ交換フォーマットをサポートしていますが、ymlでフロントバックグラウンドデータ交換をするとどうなりますか?次に、Spring MVCに新しいデータ交換フォーマットとアプリケーションを登録する方法について説明します.
yamlメッセージ変換器の実装
yamlはspringに対応する変換器がないので、再実装する必要があります.ソースコードリファレンスYamlMessageConverterは、まず、使用するMIME-TYPEを変換器に登録するコンストラクタを定義する必要があります.ここで登録しない場合、要求は406を返し、spring mvcはログ出力がなく、これは誤り訂正に不利であり、spring mvc内部には
HttpMediaTypeNotSupportedException
の異常が投げ出される.次に,抽象親クラスを実現するいくつかの抽象手法を用いて,要求が送信したメッセージを符号化する.mvcコンテナにメッセージ変換器を登録する
次に、WebMvcConfigurerAdapterにメッセージ変換器を登録し、次の2つの方法で変換器の登録を行います.
configureContentNegotiation
:spring mvcに「.yml」接尾辞を認識させ、YamlMessageConverter
変換器に渡して入力パラメータextendMessageConverters
:springの元の変換器を捨てずに現在のyml変換器を増分し、デフォルトで登録した変換器はW e b M v c C o n f i gurationSupport#addDefaultHttpMessageConvertersソースコードコントローラでconsume MediaTypeを指定
controller
コード参照:IndexController getYamlRandomBean、インタフェース受信要求データ型text/yaml
、戻りデータ型application/json
.ここでspring mvcにおけるconsumeとproduceの役割を説明します.参照ファイルindex.jsp
すべてのソースは私のGithub倉庫を参照してください:https://github.com/Crabime/coding