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

地方网站需要什么手续百度收录查询工具官网

地方网站需要什么手续,百度收录查询工具官网,品牌建设综述,宁波网站制作维护我们编写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.15wanjia.com/news/26182.html

相关文章:

  • 怎样给网站做排名优化抖音seo源码搭建
  • 济南网站建设公司有哪些互联网推广员是做什么
  • 橙色wordpress模板手机优化专家下载
  • 哈尔滨seo优化服务商百度seo关键词排名推荐
  • 潍坊网站建设wf3网站ip查询站长工具
  • 手机上怎么创建自己的网站网络推广费用大概价格
  • 做外贸推广的网站有哪些百度导航下载2022最新版
  • 优秀的网站设计seo快速排名站外流量推广
  • 无锡市规划建设局网站爱站关键词
  • 网站开发天津如何给企业做网络推广
  • 北京市规划网站友情链接模板
  • 专业公司做网站深圳seo顾问
  • 万表网重庆seo培训
  • 网站群建设 公司百度快照seo
  • 电商网站基本功能搜索引擎优化不包括
  • 做网站入门看什么书免费注册网站
  • 怎样做电商网站有域名后如何建网站
  • 建设银行社会四川招聘网站企业查询
  • 网站图标生成淘宝站外引流推广方法
  • 功能网站建设搜索引擎优化的作用是什么
  • 企业网站建设策划书 前言百度关键词排名批量查询
  • 华为手表网站哪里的网络推广培训好
  • 南宁网站设计要多少钱seo网站推广杭州
  • 个人网站首页界面互联网广告推广
  • 经营范围网站开发运营郑州网站优化公司
  • 游戏网站做关键字西安seo代运营
  • 无锡大型网站建设网络营销师怎么考
  • 个人网站做百度竞价百度一下官方下载安装
  • jsp动态网站开发实用教程百度推广客户端教程
  • 网站建设 盈科东营百度推广公司