openFeign调用异常
一个非常简单的Feign Get请求
服务提供方
@RestController
@RequestMapping("/provider")
public class ProviderController {
@GetMapping("/input")
public String provider(String str) {
return "调用成功:" + str;
}
}
服务调用方
@FeignClient(value = "CLOUD-OPENFEIGN-PROVIDER-8001")
public interface ProviderService {
@GetMapping("/provider/input")
String provider( String str);
}
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Resource
private ProviderService providerService;
@GetMapping("/test")
public String testFeign(String str) {
return providerService.provider(str);
}
}
访问 http://localhost:8002/consumer/test?str=zjm 报错信息如下
Request processing failed; nested exception is feign.FeignException$MethodNotAllowed: status 405 reading ProviderService#provider(String)
我明明发的是GET
请求,怎么变成POST
请求了??后来了解到原来是openFeign
在构造请求时需要@RequestMapping
/@RequestParam
/@PathVariable
/@RequestHeader
等来构造http请求。将Api改造如下即可解决
// 解决办法1
@GetMapping("/provider/input")
String provider(@RequestParam("str") String str);
// 解决办法2
@RequestMapping(value = "/provider/input",method = RequestMethod.GET)
String provider(@RequestParam("str") String str);