我的服务定义如下
class Echo {
private String message; // getters and setters omitted
}
@RequestMapping("/app")
interface Resource {
@RequestMapping(method = GET)
Echo echo(@ModelAttribute Echo msg);
}
@RestController
class ResourceImpl implements Resource {
@Override
Echo echo(Echo msg) { return msg; }
}
和他的客户在不同的应用程序
@FeignClient(name = "app", url = "http://localhost:8080")
interface Client extends Resource {}
但是,当我调用资源方法时
@Autowired
private Resource client;
@Test
public void test() {
Echo echo = new Echo();
echo.setMessage("hello");
client.echo(echo);
}
我收到了一条令人困惑的错误消息
feign.FeignException:状态405读取ClientLocal #echo(Echo); 内容:{“timestamp”:1512686240485,“status”:405,“error”:“方法不是 允许 “ ”异常“: ”org.springframework.web.HttpRequestMethodNotSupportedException“, ”消息“:” 请求 方法'POST'不受支持“,”路径“:”/ app“}
我在这里做错了什么?
答案 0 :(得分:0)
发现了相同的问题,对我来说,Feign使用GET进行POST混合的原因是将Object用作请求参数
与您的错误相同:
@GetMapping("/followers/{userId}/id")
Page<String> getFollowersIds(@PathVariable String userId, Pageable pageable);
在@RequstParam中添加了2个参数来修复它,例如:
@GetMapping("/followers/{userId}/id")
Page<String> getFollowersIds(@PathVariable String userId, @RequestParam Pageable pageable);