feign客户端get请求--出现异常"Method Not Allowed: Request method ‘POST‘ not supported"
下文笔者讲述今天使用feign客户端get请求时,出现POST请求不支持的异常处理方法,如下所示
今天在代码中进行feign调用时 客户端get请求 服务端接受也为get请求,但是代码还是出现相应的报错信息,如下所示 Method Not Allowed: Request method ‘POST’ not supported例
feign客户端 @GetMapping(“/list”) Result<?> queryPageList(User user, @RequestParam(name = “pageNo”, defaultValue = “1”) Integer pageNo, @RequestParam(name = “pageSize”, defaultValue = “10”) Integer pageSize) { /** 业务逻辑代码 */ } 2.feign服务端 @Component @FeignClient(value = FeignConstant.OCP_CLOUD_SYSTEM, fallbackFactory = AccountAPIFallbackFactory.class) public interface AccountApi { @GetMapping(value = "/account/accountBookDetail/list") Result<?> accountBookDetailPageList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, User user); }
出现这种情况的原因
因为使用了User对象 而在feign调用中无法识别是否为get/post 请求 因此强转成了post请求 导致在服务端报错Method Not Allowed: Request method ‘POST’ not supported
Feign不支持POST请求时的解决方法
在feign服务端api中 加上注解@SpringQueryMap 即可解决,注解的作用是将实体转成表单数据
@Component @FeignClient(value = FeignConstant.OCP_CLOUD_SYSTEM, fallbackFactory = AccountAPIFallbackFactory.class) public interface AccountApi { @GetMapping(value = "/account/accountBookDetail/list") Result<?> accountBookDetailPageList(@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, @SpringQueryMap User user); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。