当前位置: 首页 > news >正文

网站设计第一步怎么做网络热词缩写

网站设计第一步怎么做,网络热词缩写,drupal网站建设,怎样做网站亮照亮标我们编写RestController时,有可能多个接口使用了相同的RequestBody,在一些场景下需求修改传入的RequestBody的值,如果是每个controller中都去修改,代码会比较繁琐,最好的方式是在一个地方统一修改,比如将he…

我们编写RestController时,有可能多个接口使用了相同的RequestBody,在一些场景下需求修改传入的RequestBody的值,如果是每个controller中都去修改,代码会比较繁琐,最好的方式是在一个地方统一修改,比如将header中的某个值赋值给RequestBody对象的某个属性。 示例项目 https://github.com/qihaiyan/springcamp/tree/master/spring-modify-request-body

一、概述

在spring中可以使用RequestBodyAdviceAdapter修改RestController的请求参数。

二、自定义 RequestBodyAdviceAdapter

以下代码为自定义 ModifyBodyAdvice 实现 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属性。

三、验证统一修改逻辑

我们通过编写单元测试的方式验证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中发送了foo这个header,按照处理逻辑,controller中接收到的ReqBody对象的foo的值应该是header的值。

http://www.hkea.cn/news/648005/

相关文章:

  • 深圳专业企业网站建设前端培训
  • 南京平台公司seo搜索培训
  • 横沥网站建设武汉百度百科
  • 百度给做网站公司线上运营的5个步骤
  • 盘锦网站建设公司网络营销策略包括哪些
  • 简述电子商务网站开发的基本原则一站式网络营销
  • 商丘网站网络推广员的工作内容和步骤
  • 取消wordpress邮箱认证北京搜索优化排名公司
  • 千库网素材南宁seo优势
  • 西安机场商务宾馆百度做网站怎么在百度上做网站
  • ps网站建设seo网络公司
  • 网站建设步骤 教 程网站怎么做谷歌推广
  • 网站制作需要注意什么潍坊做网站哪家好
  • 专门做团购的网站有哪些色盲图
  • 百度做网站续费费用百度营业执照怎么办理
  • 深圳网站建设方维网络企业网站制作要求
  • 制作好网站黑帽seo教程
  • 云南 网站建设网站seo优化对网店的推广的作用为
  • 网站建设免费国外舆情服务公司
  • 怎么做网站banner查排名网站
  • 做网站好看的背景图片相关搜索优化软件
  • 怎么查网站是哪家制作公司做的百度收录查询
  • 企业年金交了有好处吗网络优化工程师吃香吗
  • python做网站开发百度6大核心部门
  • 自己做网站平台企业网站优化价格
  • 淘宝网网站建设的需求分析百度会员登录入口
  • 建网站的专业公司推广网站多少钱
  • 网站不去公安局备案自己怎么搭建网站
  • 外贸网站建设入门深圳网络推广哪家
  • 网站模板资源公司网站推广