# RequestBody

40개의 포스트
post-thumbnail

Spring - @RequestBody 시 defaultValue

DTO 기본값 설정법 @RequestParam은 defaultValue는 설정이 가능하다. 근데 @RequestBody로 객체를 통해 값을 받는 상황에서는 어떻게 객체 내부 필드에 defaultValue를 설정해야할 것인가...에 대해 고민하다가 🤭 결론은 깔끔하게 생성자에 값을 넣어두고 시작하는 것이다. 이렇게 하면 나중에 getter를 통해 조회할 때도 NullPointException예외가 터지지 않게 할 수 있다. 기본값을 지정할 필드를 생성자로 초기화하여 고민을 해결하자 !! ref.[DTO 기본값]

2023년 9월 13일
·
0개의 댓글
·

23-08-10 TIL (@RequestBody 의 기본 생성자)

문제 @RequestBody 의 기본 생성자 테스트 코드를 작성하는데 있어서 RequestBody에 전달해주는 dto 쪽이 null 값이 들어간다는 에러가 나왔다. 시도 @RequestBody 의 기본 생성자 해당 에러를 검색해본 결과 기본 생성자가 없기 때문에 발생하는 문제인 것으로 보인다. 따라서 해당 dto에 @NoArgsConstructor 를 추가해주었다. 해결 @RequestBody 의 기본 생성자 @NoArgsConstructor 를 추가하자 해결되었는데, 왜 어떤 dto는 추가하지 않아도 문제가 없는지 알아볼 필요성을 느꼈다. [알아본 사이트](https://velog.io/@conatuseus/RequestBody%EC%97%90-%EC%99%9C-%EA%B8%B0%EB%B3%B8-%EC%83%9D%EC%A0%95%EC%9E%90%EB%8A%94-%ED%95%84%EC%9A%94%ED%95%98%E

2023년 8월 10일
·
0개의 댓글
·
post-thumbnail

REST와 관련된 어노테이션

| 어노테이션 | 기능 | | --- | --- | | @RestController | Controller가 REST 방식을 처리하기 위한 것임을 명시한다. | | @ResponseBody | 뷰로 전달되는게 아니라 데이터 자체를 전달하기 위한 용도 | | @RequestBody | JSON 데이터를 원하는 타입으로 바인딩 처리 | | @PathVariable | URL 경로에 있는 값을 파라미터로 추출하려고 할 때 사용 | | @CrossOrigin | Ajax 크로스 도메인 문제를 해결해주는 어노테이션 | @RequestBody & @ResponseBody @RequestBody와 @ResponseBody는 요청과 응답에 관한 어노테이션으로 스프링 비동기 처리를 하는 경우 사용한다. 사용 목적

2023년 7월 16일
·
1개의 댓글
·

[Nest.js] Swagger 예시 표시: 리스트(Array) 객체 Request Body

0. Overview Examples ApiProperty 데코레이터의 type 옵션을 통해 리스트 객체를 지정한다. Spec 1. Preface Swagger 는 API 를 테스트하고 문서화 하는 것에 최고의 도구라고 생각합니다. 특히 가장 큰 장점은 소스코드 레벨에서 문서화를 할 수 있는 것입니다. API 툴은 Postman 이나 Insomnia 와 같은 전용 툴들도 많지만, 귀찮고 시간도 많이 걸리는 문서화 작업을 코드 레벨에서 할 수 있는 것은 정말 큰 장점입니다. API 의 Request, Response 가 어떤 타입인지 표시할 수 있고, 또 어떤 데이터가 필요한지 설명과 샘플 데이터도 기록해서 나타낼 수 있습니다. 이번에 새롭게 개발한 API 에서는 Request Body 에 List 형식의 데이터를 받게 되었는데요. 이 List 형식의 데이터를 Swagger 에서 어떻게 표시할 수 있는지 정리해보도록 하겠습니다.

2023년 7월 14일
·
0개의 댓글
·

@RequestParam & @RequestBody의 차이, 그리고 @ModelAttribute와@PathVariable

Resource를 가져오는 Get 메소드는 PathVariable을 사용하고, 정렬(sort)이나 필터링을 하는 경우 QueryParam을 사용하는 것이 옳은 방법 위의 어노테이션은? 위의 어노테이션들은 모두 view로부터 값을 가져오기 위한 어노테이션이다. ✔️@RequestBody 위의 값을 @RequestBody로 전송한 결과 name=jun&age=13이라는 String으로 전달된다. ✔️@RequestParam @RequestParam = 클라이언트가 요청한 URL의 쿼리 파라미터에 대한 값을 받아온다(url 상에서 데이터를 찾음) @RequestParam 으로 데이터를 받을때는 데이터를 저장하는 이름으로 메서드의 변수명을 설정해주어야 한다. /users?id=123 # 아이디가 123인 사용자를 가져온다. required = true/false 기본적으로 required = true이기 때문에

2023년 7월 10일
·
0개의 댓글
·
post-thumbnail

(Spring) @RequestBody, @ModelAttribute

@RequestBody 란? > 클라이언트가 전송하는 Json(application/json) 형태의 HTTP Body를 Java 객체로 변환시켜주는 역할을 하는 어노테이션. 주 사용 용도 : JSON, XML과 같은 형식의 데이터를 처리합니다. [ 예제 코드 - RequestBody ] > ### client 요청 데이터 > ### user Class 객체 > ### user Controller > ### @RequestBody으로 변환된 user 객체 확인 @ModelAttribute 란? > 클라이언트가 전송하는 폼(form) 형태의 HTTP Body와 요청 파라미터들을 생성자나 Setter로 바인딩하기 위해 사용되는 어노테이션. 주 사용 용도 : HTML 폼 데이터나 URL 쿼리 파라미터와 같은 형식의 데이터를 처리합니다. [ 예제 코드 - ModelAttribute ] >

2023년 6월 28일
·
0개의 댓글
·

Spring boot3 Request data

RequestParam application/x-www-form-urlencoded 타입 헤더에 dto로 받을 때 (1)은 못 들어오고 (2)는 잡힌다. (Dto는 setter있어야 잡힌다.) dto아니면 (1)도 잡고 (2)도 잡는다. boolean type은 true, True, tRUE 등 text만 맞게 보내면 된다. RequestBody body의 경우 사용해야 잡힌다. ? RequestParam이 잡는게 뭐지? (일단 쓰지 말자)

2023년 6월 26일
·
0개의 댓글
·
post-thumbnail

[Spring] HTTP 데이터를 객체로 처리하는 방법

@ModelAttribute Query String 데이터를 객체로 받아오는 방법 form 태그 POST 방식 HTML의 form 태그를 사용하여 POST 방식으로 HTTP 요청을 보낼 수 있음 이때 해당 데이터는 HTTP Body에 name=Robbie&age=95 형태로 담겨져서 서버로 전달됨 해당 데이터를 Java의 객체 형태로 받는 방법은 @ModelAttribute 애너테이션을 사용한 후 Body 데이터를 Star star 받아올 객체를 선언합니다. Query String 방식 ?name=Robbie&age=95 처럼 데이터가 두 개만 있다면 괜찮지만 여러 개 있다면 @RequestParam 애너테이션으로 하나씩 받아오기 힘들 수

2023년 6월 24일
·
0개의 댓글
·
post-thumbnail

@RequestBody가 null을 받았다

이럴 리가 없다. Ajax 코드를 살펴봐도, Postman을 통해 보내는 데이터의 필드명을 확인해도 DTO의 필드명과 다른 게 없다. 그런데 데이터가 안 들어온다. 호출된 메서드 이름만 나올 뿐 파라미터는 나오지 않는 로그를 보며 난데없는 고민이 시작됐다. 실행 위치와 메서드 이름만 나오고 입력된 파라미터가 표시되지 않는다 다행인 건 전날 Postman을 사용해 전송한 데이터를 로깅하면서, 필드 명에 대문자가 섞였던 게 모두 소문자로

2023년 5월 27일
·
0개의 댓글
·
post-thumbnail

[TIL-Annotation]@RequestBody(mapping)

HTTP의 Body 내용을 해당 어노테이션이 지정된 객체에 매핑하는 역할 Map 객체는 요청값을 특정하기 어려울 경우 주로 사용 참고 스프링부트 핵심 가이드

2023년 5월 24일
·
0개의 댓글
·
post-thumbnail

[Spring] @RequestBody 그리고 @ResponseBody

개요 웹 프로그래밍에서 JSON 통신은 매우 중요한 요소입니다. JSON은 데이터 교환 형식 중 하나이며 웹 애플리케이션에서 클라이언트와 서버 간의 데이터 교환에 많이 사용됩니다. 이러한 JSON 데이터들은 일반적으로 HTTP 요청 또는 응답의 바디에 포함되어 전달됩니다. 그렇기 때문에 @RequestBody 그리고 @ResponseBody를 잘 이해하고 적재적소에 활용하는 것은 매우 중요합니다. 이를 짧은 코드를 통해 학습해보고자 합니다. @RequestBody 해당 애노테이션이 붙은 매개변수에 HTTP 요청의 Body가 그대로 전달됩니다. 위 코드에서는 Body를 통해 전송된 JSON 데이터를 bookRequest 객체로 변환하여 받고 있습니다. 어떻게 변환을 받는가 JSON 데이터는 {”키” : “값”} 으로 구성되어 있습니다. 위 예제에서 JSON 데이터가 {”title” : “Harry Potter”, “autho

2023년 5월 22일
·
0개의 댓글
·
post-thumbnail

@RequsetBody에 ArgumentResolver가 안먹힌다?

서론 지난 글에 이어서 ArgumentResolver를 사용하려 했으나 @RequestBody를 붙이니 ArgumentResolver가 동작하지 않았다!!! 구조는 위와 같이 변경되었다. 기존에 String을 인자로 받던 떄와는 다르게 MyUser라는 객체를 통해 바인딩을 한다. 이 때 Header에 participants라는 값이 없거나 participants == juno 라면 예외가 발생하는 것이 정상적인 시나리오여야한다. ![](https://velog.velcdn.com/

2023년 4월 23일
·
0개의 댓글
·

@RequestBody 학습 로그

@RequestBody 요약 정의 @RequestBody HTTP Request Message Body를 통해 전달된 데이터를 지정한 객체로 역직렬화하는 애노테이션 HttpMessageConverter의 일종인 MappingJackson2HttpMessageConverter으로 처리 생성자를 통한 사용 방법 기본 생성자 & getter getter가 없어도 DTO의 생성 자체는 가능하지만, 필드가 초기화되지 않음 setter를 사용해도 되지만, DTO의 특성상 getter를 사용할 것을 권장 모든 필드를 초기화할 수 있는 단 하나의 생성자 컴파일 옵션으로 -parameters 필요 Gradle 환경에서는 별도의 설정 없이 사용 가능 Intellij 환경에서 실행할 경우 추가 설정 필요 Maven 환경에서는 `spri

2023년 4월 16일
·
6개의 댓글
·

[ERROR] cannot deserialize from Object value

API BODY 로 작성한 Req 클래스에서 다음과 같은 에러가 발생했다. > cannot deserialize from Object value (no delegate- or property-based Creator)" API를 다루는 코드를 여러번 만들었는데 이런 에러를 처음 발견했던 이유가 있었다. 기존 코드에서는 Req 클래스에서 생성자를 별도로 만든 코드가 없었기 때문이다. 에러 원인 Jackson Library가 빈 생성자가 없는 model을 생성하는 방법은 모른다고 한다. -> 자세한 이유는 다른 Chapter 에서 다뤄보자. 해결 : Default 생성자 추가 즉, @NoArgsConstructor 어노테이션을 추가해주면 해결된다.

2023년 3월 13일
·
0개의 댓글
·

검증 - Bean Validation

Bean Validation이란, JSR-380에 등재된 Bean Validation 2.0 이라는 표준 기술이다. 즉, 검증을 위한 애노테이션과 여러 인터페이스를 어떻게 구현해야하는지 가이드가 기술되어 있다. Bean Validation을 구현한 구현체중 일반적으로 Hibernate Validator를 사용한다. @Valid, @Validated @Valid 자바 표준 스팩인 JSR-303에 등장한 검증용 애노테이션이다. javax.validation 패키지에 속해 있다. ValidationAutoConfiguration의 LocalValidatorFactoryBean 메서드를 통해 Bean으로 등록된다. ArgumentResolver 단계에서 Controller에 넘어가기전 검증을 진행한다. Argu

2023년 2월 19일
·
0개의 댓글
·

HTTP 요청 조회 - 요청

URL 변수 요청 요청 예시 PathVariable URL에 {userId} 로 되어있는 식별자를 받아오기 위해서 사용된다. @PathVariable("pathValueName") [Type] [name] 매개 변수의 이름과 식별자 이름이 동일하다면 생략할 수 있다. @PathVariable String userId 여러 식별자를 각기 다른 매개 변수로 가져올 수 있다. Query String, HTML Form 요청 요청 예시 Query String HTML Form Query String와 HTML Form의 형식이 동일하여 Spring에서 파싱할 때 동일한 로직으로 작동한다. RequestParam @RequestParam("requestValueName") [Type] [name] 매개 변수의 이름과 요청 변수의 이름이 동일한 경우, 프로퍼티

2023년 2월 11일
·
0개의 댓글
·
post-thumbnail

Idempotency(멱등성)과 REST API. Method의 idempotency는 가변적이다.

개요 Idempotency의 개념과 이를 설명하기 위해 REST API와 HTTP Method에 대한 설명을 곁들이는 글이다. 또한 HTTP Method의 Idempotency 속성은 변할 수 있다는 것에 대해 서술한다. 서론 Spring을 이제 막 배우던 때에, @RequestMapping 기능을 막 익혔을 때의 이야기다. 다음과 같이 컨트롤러에서 @GetMapping과 @PostMapping의 URL을 "/login"과 "/login/confirm"으로 정했지만, 마음 한 켠 찝찝한 기분이 느껴졌다. > 'URL을 이렇게 정해도 괜찮은 건가?' GET은 로그인 사이트에 사용자가 접속했을 때 보는 정보가 담겨져있고, POST에는 사용자가 로그인을 위해 입력한 ID와 패스워드 정보가 담

2023년 2월 10일
·
0개의 댓글
·
post-thumbnail

@RequestBody로 받았는데 null인 경우

이게 왜 null? 데이터 삽입/수정을 테스트하기 위해 Postman에 @RequestBody에 필요한 값들을 넣어서 서버에 요청을 보냈는데 자꾸 null값을 가져오는 문제를 만난적 있는가? 예를 들어 스터디그룹 같은 유저 그룹을 생성하는 기능이라고 생각해보자. 위와 같이 body를 전달하고 컨트롤러에서 받아서 로그를 찍어보면 이렇게 나와버린다... 무엇이 문제였을까? 원인은 Jackson? 이유를 찾아보니 스프링부트에서 json으로 데이터를 변환하고 맵핑하기 위해 사용하는 Jackson이라는 라이브러리를 비롯한 복합적 문제였다. 이 Jackson 라이브러리의 무엇이 문제였는지 알기 위해 우선 Jackson이 json으로 데이터를 변환하는 과정이 어떻게 되는지 알아야 한다. Object를 json으로 변환할 때 key 값을 필드명으로

2023년 2월 7일
·
0개의 댓글
·
post-thumbnail

[Spring] @RequestBody vs @RequestParam vs @ModelAttribute

🌱 @RequestBody & @ResponseBody 웹에서 이루어지는 데이터 통신은 클라이언트와 서버간에 이루어지고 이때 중요한 것이 요청(Request)와 응답(Response)입니다. 비동기 통신을 위해서는 요청메시지와 응답메시지를 Body에 담아 보내야하는데 데이터의 형식은 JSON으로 설정합니다. 이때 @RequestBody와 @ResponseBody를 사용합니다. HttpServleRequest를 이용해 데이터를 가져오면 굳이 @RequestBody가 필요하지 않지만 VO, DTO를 사용해 데이터를 받기위해서는 사용해야 합니다. 🎈 @RequestBody 클라이언트 >> 서버 데이터를 전송할 때 JSON형태로 데이터를 만들어 요청하면 서버에서는 @RequestB

2023년 1월 19일
·
0개의 댓글
·
post-thumbnail

HTTP에 대하여

ResponseEntity클래스에서 상태 코드를 반환하는 것과 데이터를 받아오거나 보낼 때 사용하는 @RequestBody, @ResponseBody를 공부하면서 데이터(JSON)가 어떤 방식으로 url을 통해 전송이 되는지 궁금해지기 시작해서 공부해보았다. HTTP Hyper Text Transfer Protocol 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 protocol(통신규약)이다. 프론트앤드 서버와 클라이언트간의 통신에 사용된다. 또한 백앤드와 프론트앤드 서버간에 통신에도 사용된다. HTTP는 TCP/IP 기반으로 되어있다. HTTP 구조 HTTP의 통신 방식은 기본적으로 '요청과 응답(request, response)'으로 이루어져 있다. 클라이언트가 요청(HttpRequest)을 서버에 보내면 서버는 클라이언트에게 응답(HttpResponse)하는 구조이다. HTTP Request HTTP req

2022년 12월 3일
·
0개의 댓글
·