Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

까마귀코딩.log

@board 본문

카테고리 없음

@board

까마귀코딩 2023. 4. 10. 11:26

@valid  

 

입력값을 검증하는데 사용한다. 

 

일반적으로 , 자바에서 메서드나 클래스에서 파라미터를 받을때 , 이 값을이 예상한 대로인지 검증하는 코드를 작성해야 하낟. 

이때 , @valid 어노테이션을 사용하면, 해당 파라미터가 유효한 값인지 검증하는 작업을 자동으로 수행할수 있다. 

 

@valid 는 주로 spring 에서 사용되는데 

스프링에서 얘를 통해서 하는게 

요청이나 응답 객체의 데이터 유효성 검증을 자동화 하는것이다 !!

 

이를 통해 코드의 중복을 줄이고 , 코드의 가독성과 유지보수성을 높일수 있따 !!!

 

 

@requestbody 

 

 스프링에서 http 요청의 body 부분에 있는 데이터를 메서드의 파라미터로 매핑해주는애다

 

 

왜 매핑하려나 ~~~~

스프링에서 @requestbody 를 사용하면 

 

http 요청의 바디부분에 포함된 데이터를 자동으로 파싱해서 자바객체로 변환해주는 기능을 제공한다. 

 

http 요청에서 전달되는 json , xml 등의 데이터를 간편하게 처리한다. 

 

예를들어, 다음과 같이 @reqeustbody 어노테이션ㅇ르 사용하여 요청에서 전달된 json 데이터를 자바 객체로 변환ㅏㄹ수 있다. 

 

@postmapping("/users")

public user createdUser (@requestBody User user) {

//요청해서 전달된 json 데이터가 자동으로 user 객체로 변환된다. 

return userSerivce.createUser(user);

}

 

위 코드에서 ("/users") 엔드포인트로 post 요청이 들어오면, 

@requestbody 어노테이션을 사용하여 요청에서 전달된

json 데이터를 자바의 user 객체로 변환하여 createUser 메소드의 파라미터로 전달한다. 

 

 

 

그렇다면 

@PostMapping("/boards")

public ResponseEntity<SimpleBoardResponse> create(@Valid @Requestbody BoardCreateRequest request) {

 Long boardId = boardService.create(request.toEntity(), getPrincipal().getId());

return ResonseEntity.status(Httpstatus.CREATED).body(new SimpleBoardaResponse(boardId, true));

}

를 해석해보자 

 

("/boards") 엔드포인트로 post 요청이 들어오면??

BoardCreateRequest 객체가 유효한지 검증하도록 지시한다. 

즉, BoardCreateRequest 객체에 대한 유효성 검증 ( validation ) 이 수행된다.

이를 통해, boardCreateReqeust 객체의 필드가 비어있거나 , 타입이 맞지않거나 , 최소/최대 길이를 벗어났는지  등등을 검증할수 잇다. 

 

@RequestBody 어노테이션은 http 요청의 body 부분에 있는 데이터를 BoardCreateRequest 객체로 매핑 해줘야 한다. 

이를 통해,

클라이언트에서 전송한 json 형태의 데이터를 자바 객체로 변환해서 사용할수 있다. 

 

메서드 내부에서는

boardCreaterequest 객체를 사용해서 --> board 엔티티를 생성하고, 

boardService.create() 메서드를 호출해서 --> 이를 데이터 베이스에 저장한다. 

 

이때 principal 객체를 사용하여 현재 사용자의 id 를 가져온다

 

마지막으로 

 

responseEntity 객체를 생성해서 http응답을 생성한다. 

http 상태 코드로는 Httpstatus.created(201) 을 사용한다.. 

 

http 응답본문 ( response body) 으로는 simpleboardResoponse 객체를 생성하여 전달한다. 

 

이 객체는 새로 생성된게시글 board 의 id 와 성공여부 - success 를 담고있다 !!