@FeignClient强制@GetMapping与@RequestBody进行POST

时间:2018-06-14 15:57:36

标签: java spring-boot netflix-feign

我有以下带有BODY的GET方法的REST控制器,适用于测试和邮递员

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

但是当使用FeignClient来调用服务时,而是生成一个POST请求的GET请求(忽略@GetMapping注释)

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

发出错误:

Request method 'POST' not supported

1 个答案:

答案 0 :(得分:2)

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

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