I have following REST controller with GET method that have BODY, that works fine with tests and postman
@RestController
@RequestMapping(value = "/xxx")
public class Controller {
@GetMapping({"/find"})
public LocalDateTime findMax(@RequestBody List<ObjectId> ids) {
//return sth
}
}
but when FeignClient is used to call service, instead GET request a POST request is generated (@GetMapping annotation is ignored)
@FeignClient
public interface CoveragesServiceResource extends CoveragesService {
@GetMapping({"/find"})
LocalDateTime findMax(@RequestBody List<ObjectId> ids);
}
that gives an error:
Request method 'POST' not supported
Solution:
Include the feign-hc5 dependency
In your application.yml enable the use of of this client:
spring:
cloud:
openfeign:
httpclient:
hc5:
enabled: true
Note:
For HttpURLConnection
(the default client) or OkHttp
clients, GET
requests with a body will not work. HttpURLConnection
will convert such requests to POST
, leading to a 405 Method Not Allowed
error, while OkHttp
does not support sending a body with GET requests.