? ? ? ? 【優(yōu)雅的解決問題】
? ? ? ? 一断医、問題場景
????????我們在研發(fā)過程中普遍會遇到一種情況囤踩,一個請求過來近弟,會同時用到body和header里面的參數(shù)届谈,如果分別從body和header中獲取參數(shù)的話枯夜,簡直Low到爆!<枭健湖雹!在這兒給各位支個招。
? ? ? ? 二曙搬、解決方案
? ? ? ? 構(gòu)建思路:自定義注解 + 自定義參數(shù)解析器 + 注冊解析器
? ? ? ? 1? 自定義注解?RequestBodyAndHeader
? ? ? ? 2? 自定義參數(shù)解析器 RequestBodyAndHeaderResolver
? ? ? ? 紅色框標出了兩部分重點:
? ? ? ? 重點1: 合并Body和Header中的參數(shù)摔吏,其中使用BeanUtils.populate的特性來處理此場景;
? ? ? ? 重點2:判斷是否支持我們自定義的RequestBodyAndHeader纵装。
? ? ? ? 3? 在配置文件中 注冊自定義的參數(shù)解析器
? ? ? ? 4? 定義測試用的參數(shù)對象
? ? ? ? 5? 定義測試接口
? ? ? ? 6? 通過Postman測試可用性
? ? ? ? 6.1? 設(shè)置header參數(shù)和content-type
? ? ? ? 6.2? 設(shè)置對象參數(shù)
? ? ? ? 6.3? 提交請求
????????查看程序打印結(jié)果征讲,Bingo!header攜帶的參數(shù)自動賦值到了對象中橡娄。?
? ??????三诗箍、簡單總結(jié)
? ? ? ? 這里主要是運用RequestResponseBodyMethodProcessor的特性來解決問題,關(guān)于其細節(jié)可參考官方的API文檔挽唉。