栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud组件OpenFeign——默认HTTP请求方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud组件OpenFeign——默认HTTP请求方式

OpenFeign相较于Feign新增了对SpringMvc的支持,通过以下方式可以调用服务端对应的方法。

 但是如果使用@RequestMapping注解不指定请求方式时,通过客户端打印的OpenFein日志可以看出,客户端都是使用的GET请求。只有使用@PostMapping或者@RequestMapping中指定请求类型@RequestMapping(method = RequestMethod.POST)发送的才是POST请求。

那么使用@RequestMapping()时OpenFiegn默认是使用GET请求?

OK,问题的答案还需要从OpenFeign的源码中查找。

在SpringMvcContract类中有个这样的方法processAnnotationOnMethod。见名思意,这个方法就是处理Feign接口下方法上的注解的。

 与本问题相关的关键代码为上图中第218~225行,粘贴以下并添加注解。

// 获取指定方法上的RequestMapping注解信息
RequestMapping methodMapping = findMergedAnnotation(method, RequestMapping.class);
// 指定方法上的RequestMapping注解信息method属性的属性值数组
RequestMethod[] methods = methodMapping.method();
// 如果没有设置请求方式,那么默认创建GET请求
if (methods.length == 0) {
	methods = new RequestMethod[] { RequestMethod.GET };
}
// 校验是否只有一种请求方式
checkOne(method, methods, "method");
// 若是则将RequestMethod.GET作为该方法的请求方式,并存放到RequestTemplate中template的method中供后续处理并使用
data.template().method(Request.HttpMethod.valueOf(methods[0].name()));

 所以,如果@FeignClient注解修饰的接口中使用@RequestMapping且不指定请求方式,那么默认是使用GET请求的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/677930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号