背景
Feign服务方有配置:spring.application.name=scms-vendor-portals-fyk
,服务端Feign的代码大致如下:
@RestController
@RequestMapping("/bomProductFeignService")
public class BomProductFeignService {
@PostMapping("/status")
public boolean updateStatus(ScmbBomBill bomBill) throws BocoException {
System.out.println("=================进入了服务端================");
return true;
}
正常情况下,在客户端,这样写,就可以调用了:
@FeignClient(name="scms-vendor-portals-fyk/bomProductFeignService")
public interface BomProductFeignClient {
@PostMapping("/status")
public boolean updateStatus(@RequestBody ScmbBomBill bomBill) throws BocoException;
}
问题
现在要在Feign服务方的项目中,加入配置 server.servlet.context-path=/fyk
,这时,feign客户端还是使用如上方法就会错。
错误提示:404。
解决方法
这个问题出现的最终原因就是因为调用服务端的Feign的时候,路径出错了,这个使用,要是用path属性来指定前缀。这个时候name属性就写服务的serviceId。
@FeignClient(name="scms-vendor-portals-fyk", path="fyk/bomProductFeignService")
public interface BomProductFeignClient {
@PostMapping("/status")
public boolean updateStatus(@RequestBody ScmbBomBill bomBill) throws BocoException;
}