• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

internalization 구현 시 @RequestHeader의 required 옵션을 false로 설정해도 무조건 400 에러가 발생합니다.

20.06.29 14:00 작성 조회수 838

0

@GetMapping(path = "/hello-world-internationalized")

public String helloWorldInternationalized(@RequestHeader(name = "Accept-Language", required = false) Locale locale) {

System.out.println(locale.getLanguage());

return messageSource.getMessage("greeting.message", null, locale);

}

위처럼 HelloWorldController에 helloWorldInternationalized()를 구현했으나

포스트맨으로 [GET]http://localhost:8080/hello-world-internationalized

을 호출 시 header로 "Accept-Language"를 날리지 않으면 무조건 400 에러가 발생합니다.

"Accept-Language"값을 "en"이나 "fr"로 설정시에는 정상적으로 메세지를 반환합니다.

required를 false로 설정한 후 추가로 해야 할 작업이 있는지 문의드립니다.

답변 2

·

답변을 작성해보세요.

0

DAEHO LEE님의 프로필

DAEHO LEE

질문자

2020.06.30

답변 감사드립니다. 알려주신대로 해보니 curl 명령어 캡쳐화면과 동일하게 잘 되고 있습니다.

다만, 강좌에서 required = false로 설정하여 header로 "Accept-Language"를 날리지 않아도 기본값으로 처리되어 한국어로 나오게 되어야 하는데 계속 400 Bad Request가 뜨네요.

header로 "Accept-Language"를 설정시에는 잘 되고 있습니다.

0

안녕하세요, 이도원입니다. 

RequestHeader 관련해서 추가로 설정하실 것은 없을 것 같습니다. 올려주신 메소드를 제 프로젝트에 복사해서 실행시, System.out.println 메소드에서 locale.getLanguage()를 사용하고 있어,

1. Request Header가 없으면, 500 Internal Server Error 

2. Request Header가 존재하면, 정상 처리 됩니다. 

POSTMAN의 cache를 초기해 보시고 실행하시거나, 터미널에서 curl 명령어로 다시 한번 테스트 해 보시기 바랍니다.

감사합니다.