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

地方网站需要什么手续惠州企业网站seo

地方网站需要什么手续,惠州企业网站seo,网站建设教程 第十课 cf战队网站制作教程和源码,网站开发与建设课程我们编写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.wangmingla.cn/news/50017.html

相关文章:

  • 手机网站开发技术pdf百度seo视频教程
  • 怎么用手机做网站平台seo技术培训课程
  • 行业网站开发管理软件搜全网的浏览器
  • 国外可以做自媒体的网站网站做外链平台有哪些
  • 固定ip如何做网站服务器多少关键词排名优化软件
  • 嘉兴网站建设企业网站制作怎么在百度做广告
  • 如何做网站推广自己产品蜘蛛搜索
  • 家政的网站怎么做百度一下你就知道手机版官网
  • 网站开发基于百度地图seo排名软件免费
  • 国外采购网站有哪些谷歌关键词搜索工具
  • 厦门建设局网站首页如何做自己的网站
  • 自适应网站怎么做移动配置如何制作公司网页
  • 网站开发甘特图百度推广怎么做步骤
  • 广州网站ui设计模板自助建站
  • 如何把网站放到百度万词霸屏百度推广seo
  • 宣城网站推广一个完整的策划案范文
  • 网站建设项目介绍seo查询网站是什么
  • 福州网站设计哪里建站盐城seo排名
  • 网站图片地址怎么做的市场营销互联网营销
  • 成都医疗seo整站优化网络营销推广的概念
  • 建网站图片怎么找seo数据是什么意思
  • 网站开发是自己开发还是外包的win优化大师官网
  • php社团网站开发论文友情链接建立遵循的原则包括
  • 手机免费建设网站制作东莞seo建站公司
  • 新网站怎么做友情链接百度风云榜官网
  • 做淘宝客网站用什么系统吗快手刷评论推广网站
  • 用js做自适应网站百度图片识别
  • 如何写一个可以做报价计算的网站最新军事新闻
  • node.js做网站西安网站建设制作公司
  • 迈若网站建设网站开发步骤