요즘에는 MSA, 프론트프레임워크 등 JSON으로 통신할 일이 많고, 따라서 백엔드 개발자는 API를 개발할 일이 많다.
오랜만에 JPA수업이다. h2를 이용하면 되고, jpashop이라는 프로젝트, 그리고 dbUrl을 이용함.
김영한님은 개인적으로 템플릿엔진을 이용하는 컨트롤러와, API들을 패키지를 분리시킨다고 하심.
API와 컨트롤러들은 예외처리 방식이 너무 다르다.
그래서 공통으로 처리되어야 할 부분이 많이 달라서 아예 패키지를 분리시킨다고 하심
우리도 분리시켜서 시작해보자.
등록에 대한 가장 기본적인 버전의 API를 만들어보자.
@RestController
@RequiredArgsConstructor
public class MemberApiController {
private final MemberService memberService;
@PostMapping("/api/v1/members")
public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) {
}
@Data
static class CreateMemberResponse {
private Long id;
}
}
@RequestBody
는 JSON형식으로 요청이 온 데이터를 직렬화해준다.
private final MemberService memberService;
@PostMapping("/api/v1/members")
public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member) {
Long id = memberService.join(member);
return new CreateMemberResponse(id);
}
@Data
static class CreateMemberResponse {
private Long id;
public CreateMemberResponse(Long id) {
this.id = id;
}
@Data
static class CreateMemberRequest {
private String name;
}