SpringMVCのyamlデータ交換フォーマット実現


SpringMVCのyamlデータ交換フォーマット実現
よく知られているように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の役割を説明します.
  • consumes:インタフェースが受信可能なリクエストデータ型、フロントのajaxリクエストに対応するcontentType
  • produces:インタフェースが返すリクエストデータ型、対応フロントのacceptリクエストヘッダブラウザのスクリーンショットおよび解釈は以下の通りである:
  • フロントの書き方
    参照ファイルindex.jsp
    すべてのソースは私のGithub倉庫を参照してください:https://github.com/Crabime/coding