회원등 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로 받는게 좋다.
엔티티를 바로 받으면 안된다. 엔티티를 노출해서도 안된다.
'JPA' 카테고리의 다른 글
| 2월 22일 JPA 회원수정 API(Rest 스타일) (0) | 2023.02.22 |
|---|---|
| 2월 21일 회원조회 API v2 (0) | 2023.02.21 |
| 2월 20일 JPA JPQL- 벌크연산 (0) | 2023.02.20 |
| 2월 20일 JPQL - named쿼리 (정적쿼리) (0) | 2023.02.20 |
| 2월 17일 JPA JPQL 엔티티 직접 사용 (0) | 2023.02.17 |