不支持POST请求方法,支持以下GET、 HttpRequestMethodNotSupportedException: Request method ‘POST‘ not supported

不支持POST请求方法,支持以下GET、 HttpRequestMethodNotSupportedException: Request method 'POST' not supported

关于使用feign出现的问题

最近在使用feign的时候发现一些问题,是几个开发时间比较长的同事都不知道的问题,今天记录一下。

feign使用GET方法请求时带的参数为一个实体

/**
     * 服务消费处使用GET方法
     *
     * @param
     * @return
     */
	@GetMapping(value = "/hello")
    @ResponseBody
    public Object hello (Hello hello) {
        Object  list =helloClient.hello(hello);
        return list;
    }
/**
     * 根据实体查询相关数据
     *
     * @param
     * @return
     */
    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    Object hello(Hello hello);

服务端接口

/**
    * 查询数据列表
    */
    @GetMapping(value = "/hello")
    public Object hello( Hello hello) {
        log.info("正在执行查询:  req={}",JSON.toJSONString(hello));
        List<Hello > helloList= helloService.listHellos(hello);
        return helloList;
    }

调用接口后出现:
不支持POST请求方法,支持以下GET、

org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported

不支持POST请求方法,支持以下GET、
org.springframework.web.HttpRequestMethodNotSupportedException: Request method ‘POST’ not supported

出现这样的错误

原因是feign的中不支持带实体的GET方法,如果带的不是实体,带的是基础类的话就没有问题。

如何解决这个问题

遇到这样的问题时候可以将所有的请求方法可以都改为 POST 就可以解决这个问题

另一个解决方案

但是有时候这样的请求为遵循代码风格或者各种奇怪的需求时 消费端必须为GET方法

/**
     * 根据实体查询相关数据
     *
     * @param
     * @return
     */
    @RequestMapping(value = "/hello",method = RequestMethod.POST)
    Object hello(@RequestBody Hello hello);

服务端接口

/**
    * 查询数据列表
    */
    @PostMapping(value = "/hello")
    public Object hello(@RequestBody Hello hello) {
        log.info("正在执行查询:  req={}",JSON.toJSONString(hello));
        List<Hello > helloList= helloService.listHellos(hello);
        return helloList;
    }

这个解决方法是处了消费端处的接口方法仍旧为GET,其他的地方,从Feign中到服务端都改为POST方法。

接口也是可以正常访问的。

结语

如果对你有帮助可以点赞。
时光荏苒,岁月如梭。
好了,今天的关于feign的小问题就到这里了哦,我非常期待我的下一篇博客尽快上线。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值