【问题标题】:@FeignClient forces @GetMapping with @RequestBody to POST@FeignClient 强制 @GetMapping 和 @RequestBody 发布
【发布时间】:2018-06-14 15:57:35
【问题描述】:

我有以下带有 GET 方法的 REST 控制器,该方法具有 BODY,可以很好地与测试和邮递员配合使用

@RestController
@RequestMapping(value = "/xxx")
public class Controller {
    @GetMapping({"/find"})
    public LocalDateTime findMax(@RequestBody List<ObjectId> ids) {
        //return sth   
    }
}

但是当使用 FeignClient 调用 service 时,GET 请求会生成一个 POST 请求(@GetMapping 注解被忽略)

@FeignClient
public interface CoveragesServiceResource extends CoveragesService {
    @GetMapping({"/find"})
    LocalDateTime findMax(@RequestBody List<ObjectId> ids);
}

给出错误:

Request method 'POST' not supported

【问题讨论】:

    标签: java spring-boot netflix-feign


    【解决方案1】:

    GET 请求在技术上可以有正文,但正文应该没有explained in this answer 的含义。您可能可以使用主体声明 GET 端点,但某些网络库和工具根本不支持它,例如Jersey 可以配置为允许,但 RESTEasy 不能as per this answer

    建议将/find 声明为POST 或不使用@RequestBody

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多