@ResponseBody 를 사용하면 응답 결과를 HTTP 메시지 바디에 직접 담아서 전달할 수 있다.
물론 이 경우에도 view를 사용하지 않는다.
스프링은 @ModelAttribute , @RequestParam 과 같은 해당 애노테이션을 생략시 다음과 같은 규칙을
적용한다.
String
, int
, Integer
같은 단순 타입 = @RequestParam
나머지 = @ModelAttribute
(argument resolver 로 지정해둔 타입 외)
@ResponseStatus
어노테이션을 사용하여 따로 설정해주어야한다.return new ResponseEntity<MoveResponseDto>(moveResponseDto, headers, HttpStatus.valueOf(200));
return ResponseEntity.ok()
.headers(headers)
.body(moveResponseDto);
ResponseEntity 사용하여 HTTP 응답에 필요한 요소들 중 대표적인 Status, Header , Body 를 지정하여 응답을 만들 수가 있습니다.
https://tecoble.techcourse.co.kr/post/2021-05-10-response-entity/
@FunctionalInterface
public interface HttpRequestHandler {
void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException;
}
스프링 MVC는 다음의 경우에 HTTP 메시지 컨버터를 적용한다.
스프링 부트 기본 메시지 컨버터
0 = ByteArrayHttpMessageConverter // 클래스 타입: byte[] , 미디어타입: */*
1 = StringHttpMessageConverter // 클래스 타입: String , 미디어타입: */*
2 = MappingJackson2HttpMessageConverter // 클래스 타입: 객체 또는 HashMap , 미디어타입 application/json