Feign客户服务端配置了server.servlet.context-path,客户端无法调用

Feign客户服务端配置了server.servlet.context-path,客户端无法调用

    • 背景
    • 问题
    • 解决方法

背景

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;
}

你可能感兴趣的:(Spring,Cloud微服务,SC问题)