본문 바로가기

JPA

2월 21일 JPA API개발 기본 v1

회원등 API , 회원수정 API , 회원조회 API

 

1.회원등록 API

-package만들기(API) // 패키지를 분리한다.

-MemberAPIController 생성

-@Controller와 @ResponseBody를 합친 @RestController와 

@RequiredArgsConstructor를 명시

(반환값이 JSON인 controller)

 

@PostMapping("/api/v1/members")

public createMemberResponse saveMemberV1(@RequestBody @Valid member member){

//@RequestBody @Valid member member 값을 엔티티로 직접 받고있다. 엔티티를 직접 노출하고 있는 상황.

 

메서드에 @ResponseBody를 명시하면 view에서

Json형식으로 보낸 데이터를 Member에 바로 매핑해주게 된다.

Postman등 API사용시 데이터를 JSON으로 받기 때문

 

Long id = MemberService.join(member);

return new createMemberResponse(id);

}

 

@Data //lombok

public class createMemberResponse{

private Long id;

public createMemberResponse(Long id){

this.id = id

};

}

 

Entity 제약조건이 맞지않을경우 @Valid에서 감지

postman에서 오류반환

 

Validation 에서 Controller 까지를 "프리젠테이션 계층" 이라 한다.

 

만약 엔티티 필드명이 바뀌어버리면 API전략이 바뀌게 되는 심각한 오류

문제는 엔티티는 바뀔 확률이 높은데 그때마다 API가 동작하지 않는것

그러니 API 요청스팩에 맞게 별도의 DTO로 받는게 좋다.

엔티티를 바로 받으면 안된다. 엔티티를 노출해서도 안된다.