Replies: 1 comment 1 reply
|
이번에 분량 엄청 많았는데 제일 먼저 올리셨네요 ㅎㅎ 굳입니다 ! |
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
5️⃣ HTTP 요청 - 기본, 헤더 조회
HTTP 헤더 정보를 조회하는 방법 → 코드에서 설명
애너테이션 기반의 스프링 컨트롤러에서 지원하는 파라미터들 출력
➡️HTTP 헤더 정보 관련
HttpServletRequest
HttpServletResponse
HttpMethod : HTTP메서드를 조회한다.
Locale : Locale 정보를 조회한다.
locale=ko_KR@RequestHeader MultiValueMap<String, String> headerMap
@RequestHeader("host") String host
@CookieValue(value = “myCookie”, required = false) String cookie
6️⃣ HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form
1️⃣HTTP 요청 데이터 조회 - 개요
➡️클라이언트에서 서버로 요청 데이터를 전달할 때는 주로 3가지 방법
2️⃣ 요청 파라미터 - 쿼리 파라미터, HTML Form
HttpServletRequest의 request.getParameter() 를 사용하면 다음 두가지 요청 파라미터를 조회할 수 있다.
GET, 쿼리 파라미터 전송
POST, HTML Form 전송
GET 쿼리 파라미터 전송, POST HTML Form 전송 방식이든 둘다 형식이 같으므로 구분 없이 조회할 수 있다.→ 이것을 간단히
요청 파라미터(request parameter)조회라 한다.3️⃣ 스프링으로 요청 파라미터 조회하는 방법
7️⃣ HTTP 요청 파라미터 - @RequestParam
@RequestParam을 사용하면 요청 파라미터를 매우 편리하게 사용할 수 있다.✅requestParamV2
@RequestParam : 파라미터 이름으로 바인딩
@responsebody : View조회를 무시하고, HTTP message body에 직접 해당 내용 입력
@RequestParam의 name(value) 속성이 파라미터 이름으로 사용
✅requestParamV3
✅requestParamV4
String,int,Integer등의 단순 타입이면@RequestParam도 생략 가능✅파라미터 필수 여부 -requestParamRequired
@RequestParam.required 는 파라미터 필수 여부 설정 옵션
/request-param-required 요청
주의 - 파라미터 이름만 사용
주의 - 기본형(primitive)에 null 입력
해결법
8️⃣ HTTP 요청 파라미터 - @ModelAttribute
스프링은 이 과정을 자동화 해주는 애너테이션이 있다.
@ModelAttribute이다.@Data는 롬복에 있는 애너테이션으로 @Getter, @Setter, @tostring, @EqualsAndHashCode, @requiredargsconstructor를 자동으로 만들어줌✅@ModelAttribute 적용 - modelAttributeV1
➡️프로퍼티
✅@ModelAttribute 적용 - modelAttributeV2
9️⃣ HTTP 요청 메시지 - 단순 텍스트
요청 파라미터와 다르게, HTTP 메시지 바디를 통해 데이터가 직접 넘어오는 경우는
@RequestParam,@ModelAttribute를 사용할 수 없다.(HTML Form 형식으로 전달되는 경우는 요청 파라미터로 인정된다)✅RequestBodyStringController
✅Input, Output 스트림, Reader -requestBodyStringV2
✅HttpEntity - requestBodyStringV3
스프링 MVC는 다음 파라미터를 지원한다.
@RequestParamX,@ModelAttributeXHttpEntity를 상속받은 객체들도 다음과 같은 기능을 제공한다.
HttpStatus.CREATED)
✅**@RequestBody - requestBodyStringV4**
@RequestBody🔴요청 파라미터 vs HTTP 메시지 바디
➡️ @responsebody
@ResponseBody를 사용하면 응답 결과를 HTTP 메시지 바디에 직접 담아서 전달할 수 있다.1️⃣ 0️⃣ HTTP 요청 메시지 - JSON
✅RequestBodyJsonController
objectMapper를 사용해서 자바 객체로 변환한다.✅requestBodyJsonV2 - @RequestBody 문자 변환
messageBody에 저장한다.messageBody를objectMapper를 통해서 자바 객체로 변환한다.✅requestBodyJsonV3 - @RequestBody 객체 변환
✅@RequestBody는 생략 불가능
스프링은
@ModelAttribute,@RequestParam과 같은 해당 애노테이션을 생략시 다음과 같은 규칙을 적용한다.String,int,Integer같은 단순 타입 =@RequestParam@ModelAttribute(argument resolver 로 지정해둔 타입 외)따라서 HelloData에 @RequestBody를 생략하면 @ModelAttribute가 적용되어버린다.
✅requestBodyJsonV4 - HttpEntity
✅requestBodyJsonV5
@responsebody
@ResponseBody를 사용하면 해당 객체를 HTTP 메시지 바디에 직접 넣어줄 수 있다. 물론 이 경우에도HttpEntity를 사용해도 된다.@RequestBody 요청
@responsebody 응답
All reactions