You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@ResponseBody//뷰 조회를 무시하고 HTTP message body에 해당 내용 직접 입력@RequestMapping("/request-param-v2")
publicStringrequestParamV2(@RequestParam("username") StringmemberName,
@RequestParam("age") intmemberAge) {
log.info("username : {} age : {}", memberName, memberAge);
return"ok";
}
HttpEntity , @RequestBody 를 사용하면 HTTP 메시지 컨버터가 HTTP 메시지 바디의 내용을 우리가 원하는 문
자나 객체 등으로 변환해준다.
HTTP 메시지 컨버터는 문자 뿐만 아니라 JSON도 객체로 변환해주는데, 우리가 방금 V2에서 했던 작업을 대신 처리해준다.
자세한 내용은 뒤에 HTTP 메시지 컨버터에서 다룬다
주의 ! HTTP 요청시에 content-type이 application/json인지 꼭! 확인하기
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
섹션 6. 스프링 MVC - 기본 기능 (2)
5. HTTP 요청 - 기본, 헤더 조회
애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.
RequestHeaderController
HttpServletRequest
HttpServletResponse
HttpMethod : HTTP 메서드 조회
Locale : Locale 정보 조회
@RequestHeader MultiValueMap<String, String> headerMap
@RequestHeader("host") String host
@CookieValue(value = "myCookie", required = false) String cookie
MultiValueMap@Slf4j아래의 코드를 자동으로 생성해서 로그를 선언해준다. 개발자는 편리하게
log사용 가능6. HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form
HTTP 요청 데이터 조회 - 개요
서블릿에서 학습했던 HTTP 요청 데이터를 조회하는 방법을 스프링으로 바꿔보기
HTTP 요청 데이터를 통해 클라이언트에서 서버로 데이터 전달하는 방법
GET - 쿼리 파라미터
POST - HTML Form
3, HTTP message body 에 데이터를 직접 담아서 요청
요청 파라미터 - 쿼리 파라미터, HTML Form
HttpServletRequest의request.getParameter()를 사용하면 다음 두가지 요청 파라미터를 조회할 수 있다.1. GET , 쿼리 파라미터 전송
http://localhost:8080/request-param?username=hello&age=202. POST , HTML Form 전송
두가지 방식의 형식이 같으므로 구분없이 조회할 수 있다. 이것을 간단히 요청 파라미터 조회라고 한다.
RequestParamController ( 스프링으로 요청 파라미터 조회하기)
request.getParameter()
HttpServletRequest가 제공하는 방식으로 요청 파라미터를 조회
테스트 용 Post Form 페이지 생성
7. HTTP 요청 파라미터 - @RequestParam
requestParamV2
RequestParamname(value)속성이 파라미터 이름으로 사용requestParamV3
HTTP 파라미터 이름이 변수 이름과 같으면
@RequestParam(name="xx")생략 가능requestParamV4
String,int,Integer등의 단순 타입이면@RequestParam생략 가능파라미터 필수 여부 - requestParamRequired
@RequestParam.required기본 값 적용 - requestParamDefault
defaultValue를 사용하여 기본 값 적용 가능, 이미 기본 값이 있기에required는 의미 없다파라미터를 Map으로 조회하기 - requestParamMap
파라미터를 Map, MultiValueMap으로 조회할 수 있다.
@RequestParam MapMap(key=value)@RequestParam MultiValueMapMultiValueMap(key=[value1, value2, ...]) ex) (key=userIds, value=[id1, id2])8. HTTP 요청 파라미터 - @ModelAttribute
요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야 한다.
HelloData
요청 파라미터를 바인딩 받을 객체
@Data롬복 :@Getter,@Setter,@ToString,@EqualsAndHashCode,@RequiredArgsConstructor를 자동으로 적용해준다.@ModelAttribute 적용 v1
마법처럼 HelloData 객체가 생성되고, 요청 파라미터의 값이 모두 들어가 있다.
@ModelAttribute가 있으면 스프링이 실행하는 내용
@ModelAttribute 생략 - modelAttributeV2
@ModelAttribute를 생략할 수 있다. 그런데@RequestParam도 생략할 수 있으니 혼란이 발생할 수 있다.스프링의 규칙
String,int,Integer등의 단순 타입 :@RequestParam@ModelAttribute9. HTTP 요청 파라미터 - 단순 텍스트
HTTP message body에 데이터를 직접 담아서 요청
@RequestParam,@ModelAttribute를 사용할 수 없다RequestBodyStringController
Input, Output 스트림, Reader - requestBodyStringV2
스프링 MVC가 지원하는 파라미터
HttpEntity - requestBodyStringV3
HttpEntity HTTP header, body 정보를 편리하게 조회
@RequestParamX,@ModelAttributeXHttpEntity를 상속받은 다음 객체들도 같은 기능을 제공return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED)@RequestBody - requestBodyStringV4
@RequestBody
HTTP 메시지 바디 정보를 편리하게 조회 가능
*헤더 정보가 필요하면
HttpEntity또는@RequestHeader사용*요청 파라미터를 조회하는 기능과 관계 없음
@RequestParamX,@ModelAttributeX요청 파라미터 vs HTTP 메시지 바디
@RequestParam,@ModelAttribute@RequestBody@responsebody
@ResponseBody를 사용하면 응답 결과를 HTTP 메시지 바디에 담아서 전달 가능, view는 사용하지 않음10. HTTP 요청 파라미터 - JSON
RequestBodyJsonController
objectMapper를 사용해서 자바 객체로 변환한다.requestBodyJsonV2 - @RequestBody 문자 변환
@RequestBody를 사용해서 HTTP 메시지에서 데이터를 꺼내고 messageBody에 저장messageBody를objectMapper를 통해서 자바 객체로 변환문자로 변환하고 다시 json으로 변환하는 과정이 불편하다. @ModelAttribute처럼 한번에 객체로 변환할 수는 없을까?requestBodyJsonV3 - @RequestBody 객체 변환
@RequestBody 객체 파라미터
HttpEntity,@RequestBody를 사용하면 HTTP 메시지 컨버터가 HTTP 메시지 바디의 내용을 우리가 원하는 문자나 객체 등으로 변환해준다.
HTTP 메시지 컨버터는 문자 뿐만 아니라 JSON도 객체로 변환해주는데, 우리가 방금 V2에서 했던 작업을 대신 처리해준다.
자세한 내용은 뒤에 HTTP 메시지 컨버터에서 다룬다
All reactions