[Java/오류노트] Solved - Service id not legal hostname (xxxx)
adjh54
2024. 11. 25. 20:01
728x170
해당 글에서는 Java에서 발생한 Service id not legal hostname 오류에 대해 해결방법에 대해 알아봅니다
1) 문제점
💡 문제점
- 로컬 서버를 실행하는 중에 Service id not legal hostname 문제점이 발생하였습니다. - 이는 주로 Spring Cloud Feign Client를 사용하는 도중에 발생하는 문제를 의미합니다. - 서비스 ID가 올바른 호스트네임 형식이 아닐때 나타나는 문제점입니다.
2) 해결책
💡 해결책
- 아래와 같이 @FeignClient 어노테이션을 통해서 name, url을 지정을 하는데 “json placeholder”라는 이름으로 지정을 하였습니다. - 이는 허용되지 않은 호스트 네임에 속합니다. “특수문자나 공백”을 포함하는 경우 허용되지 않는 호스트 네임을 의미합니다. - 반대로 허용되는 호스트 네임의 경우는 서비스 이름에는 영문자, 숫자, 하이픈(-)만 사용하는 것이 안전하며 호스트네임은 DNS 명명 규칙을 따라야합니다.
@FeignClient(name = "json placeholder", url = "<https://jsonplaceholder.typicode.com>")// 잘못된 사용예시(X) - 공백이 포함됨@FeignClient(name = "json placeholder^^", url = "<https://jsonplaceholder.typicode.com>")// 잘못된 사용예시(X) - 특수문자가 포함됨@FeignClient(name = "json-placeholder", url = "<https://jsonplaceholder.typicode.com>")// 올바른 사용예시(O) - 하이픈(-)으로 문자 연결@FeignClient(name = "jsonPlaceholder", url = "<https://jsonplaceholder.typicode.com>")// 올바른 사용예시(O) - CamelCase로 문자를 구성publicinterfaceOpenFeignService{
@GetMapping("/posts")List getPosts();
@GetMapping("/posts/{id}")PostResponseDto getPostById(@PathVariable("id") String id);
}
1. 참고 : @FeignClient
💡 @FeignClient
- HTTP 클라이언트를 생성하기 위한 인터페이스를 선언하는 어노테이션입니다. 이 어노테이션을 사용하면 REST API를 호출하는 인터페이스를 쉽게 정의할 수 있습니다.
- 선언만으로 REST 클라이언트를 정의하며, Spring Runtime 단계에서 해당 인터페이스의 구현체를 자동으로 생성합니다. - @GetMapping, @PostMapping 등의 Spring MVC 어노테이션을 그대로 사용할 수 있습니다.