1. 程式人生 > >SpringCloud openFeign 報錯:feign.FeignException: status 404 reading UserMessageClient

SpringCloud openFeign 報錯:feign.FeignException: status 404 reading UserMessageClient

在服務提供commons暴露介面:

@FeignClient(value = "COMMONS",fallback =UserMessageClient.UserMessageClientFallback.class)
public interface UserMessageClient {
    @RequestMapping(value = "/user/sendMessage",method = RequestMethod.POST)
    boolean userLoginByCode(@RequestParam(value = "phone", required = true) String phone);

    @Component
    static class UserMessageClientFallback implements UserMessageClient{

        @Override
        public boolean userLoginByCode(String phone) {
            return false;
        }
    }
}

配置檔案:

eureka:
  client:
    service-url:
     defaultZone: http://132.232.173.122:8761/eureka/

在服務呼叫user上呼叫介面:

@RestController()
@RequestMapping("/userRegister")
public class HomeController {

    @Autowired
    UserMessageClient userMessageClient;

    @Value("${person.sex}")
    private String dev;
    @PostMapping("/index")
    public ResultVo<Map<String, String>> index(@Phone @RequestParam String phone, Map<String,Object> map){
        boolean flage=false;
        try {
            flage= userMessageClient.userLoginByCode(phone);
        }catch (Exception e){
            throw new BusinessException(ResultEnum.NO_ACCESS);
        }

        if (!flage) {
            map.put("info", "傳送失敗");
            return ResultVoUtil.error(ResultEnum.PHONE_SENT_FAIL.getCode(), ResultEnum.PHONE_SENT_FAIL.getMsg());
        }else {
            map.put("info", "傳送成功");
            return ResultVoUtil.success(map);
        }


    }

bootstrap.yml檔案配置:

spring:
  cloud:
    config:
      discovery:
        enabled: true
        service-id: config
      label: master
      profile: dev
eureka:
  client:
    service-url:
      defaultZone: http://132.232.173.122:8761/eureka/

服務呼叫是出現feign.FeignException: status 404 reading UserMessageClient

後查是在commons服務上配置了path

server:
  port: 7979
  servlet:
    context-path: /commons

所以在介面的@FeignClient註解上新增path值

@FeignClient(value = "COMMONS", path = "/commons",fallback =UserMessageClient.UserMessageClientFallback.class)
public interface UserMessageClient {
    @RequestMapping(value = "/user/sendMessage",method = RequestMethod.POST)
    boolean userLoginByCode(@RequestParam(value = "phone", required = true) String phone);

    @Component
    static class UserMessageClientFallback implements UserMessageClient{

        @Override
        public boolean userLoginByCode(String phone) {
            return false;
        }
    }
}

解決,記錄。