国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

地方網(wǎng)站需要什么手續(xù)成免費crm軟件有哪些優(yōu)點

地方網(wǎng)站需要什么手續(xù),成免費crm軟件有哪些優(yōu)點,購物商城網(wǎng)站的制作,長春專業(yè)網(wǎng)站建設價格我們編寫RestController時,有可能多個接口使用了相同的RequestBody,在一些場景下需求修改傳入的RequestBody的值,如果是每個controller中都去修改,代碼會比較繁瑣,最好的方式是在一個地方統(tǒng)一修改,比如將he…

我們編寫RestController時,有可能多個接口使用了相同的RequestBody,在一些場景下需求修改傳入的RequestBody的值,如果是每個controller中都去修改,代碼會比較繁瑣,最好的方式是在一個地方統(tǒng)一修改,比如將header中的某個值賦值給RequestBody對象的某個屬性。 示例項目 https://github.com/qihaiyan/springcamp/tree/master/spring-modify-request-body

一、概述

在spring中可以使用RequestBodyAdviceAdapter修改RestController的請求參數(shù)。

二、自定義 RequestBodyAdviceAdapter

以下代碼為自定義 ModifyBodyAdvice 實現(xiàn) RequestBodyAdviceAdapter

@ControllerAdvice
public class ModifyBodyAdvice extends RequestBodyAdviceAdapter {@AutowiredHttpServletRequest httpServletRequest;@Override@NonNullpublic Object afterBodyRead(@NonNull Object body, @NonNull HttpInputMessage inputMessage,@NonNull MethodParameter parameter, @NonNull Type targetType,@NonNull Class<? extends HttpMessageConverter<?>> converterType) {String requestMethod = httpServletRequest.getMethod();String fieldName = "foo";if (StringUtils.startsWithIgnoreCase(requestMethod, HttpMethod.PUT.name())|| StringUtils.startsWithIgnoreCase(requestMethod, HttpMethod.POST.name())) {Field field = ReflectionUtils.findField(body.getClass(), fieldName);if (field != null) {ReflectionUtils.makeAccessible(field);String paramValue = Optional.ofNullable(httpServletRequest.getHeader(fieldName)).orElse("");Method method = ReflectionUtils.findMethod(body.getClass(), "set" +StringUtils.capitalize(fieldName), field.getType());if (method != null) {ReflectionUtils.invokeMethod(method, body, paramValue);}}}return super.afterBodyRead(body, inputMessage, parameter, targetType, converterType);}@Overridepublic boolean supports(@NonNull MethodParameter methodParameter,@NonNull Type targetType,@NonNull Class<? extends HttpMessageConverter<?>> converterType) {return true;}
}

便于演示處理過程,我們在代碼中寫死了要修改的請求對象的屬性為 foo ,從請求header中獲取foo這個header的值,然后通過反射賦值到請求對象的foo屬性。

三、驗證統(tǒng)一修改邏輯

我們通過編寫單元測試的方式驗證RequestBody的值是否能夠正常修改。
在DemoApplicationTest這個單元測試程序中進行接口調用,并驗證返回結果。

   @Testpublic void test() {ReqBody reqBody = new ReqBody();ResponseEntity<ReqBody> resp = testRestTemplate.exchange(RequestEntity.post("/test").header("foo", "test").body(reqBody), ReqBody.class);log.info("result : {}", resp);assertThat(resp.getBody().getFoo(), is("test"));}

我們調用controller時傳入了的RequestBody為 ReqBody的一個對象,這個對象沒有對屬性進行賦值,在請求header中發(fā)送了foo這個header,按照處理邏輯,controller中接收到的ReqBody對象的foo的值應該是header的值。

http://aloenet.com.cn/news/36994.html

相關文章:

  • 中山石岐網(wǎng)站建設重慶seo建站
  • 廊坊網(wǎng)站建設策劃經(jīng)典軟文廣告案例
  • 網(wǎng)站開發(fā)翻譯插件怎么推廣自己的微信
  • 網(wǎng)站建設服務內容今天濟南剛剛發(fā)生的新聞
  • 公司怎么制作網(wǎng)站免費發(fā)帖推廣網(wǎng)站
  • 吉林省建設廳網(wǎng)站首頁域名??烤W(wǎng)頁推廣大全
  • 網(wǎng)站功能設計的內容個人怎么注冊自己的網(wǎng)站
  • 無貨源電商平臺有哪些廈門站長優(yōu)化工具
  • 廣告?zhèn)髅焦揪W(wǎng)站網(wǎng)站推廣策劃報告
  • html5網(wǎng)站開發(fā)的源碼網(wǎng)絡顧問
  • 西藏建設廳網(wǎng)站首頁seo科技網(wǎng)
  • 做視頻網(wǎng)站虛擬主機怎么選廣告聯(lián)盟接廣告
  • wordpress 采集圖片seo排名點擊首頁
  • 怎么用服務器搭建網(wǎng)站推廣之家app下載
  • 公司名稱注冊查詢系統(tǒng)seo營銷工具
  • wordpress漂亮的主題網(wǎng)站seo優(yōu)化有哪些方面
  • 商丘做網(wǎng)站sqlongliqi市場營銷四大基本策略
  • linux如何架設網(wǎng)站貴陽網(wǎng)絡推廣排名
  • 微信小程序視頻網(wǎng)站開發(fā)教程靜態(tài)網(wǎng)頁制作
  • 網(wǎng)站建設圖片怎么做免費b站網(wǎng)頁推廣
  • 網(wǎng)站做數(shù)據(jù)分析的意義北京百度推廣投訴電話
  • 做網(wǎng)站營業(yè)執(zhí)照經(jīng)營范圍怎么填寫免費seo排名軟件
  • 做公司網(wǎng)站用什么系統(tǒng)上海疫情最新數(shù)據(jù)
  • 淮安市哪里可以做網(wǎng)站開魯視頻
  • wordpress頁面教程視頻小紅書搜索優(yōu)化
  • 商標 做網(wǎng)站 是幾類站長工具天美傳媒
  • 雅安交通建設集團網(wǎng)站太原網(wǎng)絡推廣公司哪家好
  • 鄭州網(wǎng)站建設網(wǎng)站制作百度官網(wǎng)推廣平臺電話
  • 輕云服務器 多個網(wǎng)站今日頭條鄭州頭條新聞
  • 泉州網(wǎng)站制作專業(yè)產(chǎn)品怎么做市場推廣