API ๋ถ๋ฆฌ
๊ณตํต์ผ๋ก ์์ธ์ฒ๋ฆฌ๋ฅผ ํ ๋ ํจํค์ง๋ ๊ตฌ์ฑ๋จ์๋ก ๋ง์ด ํ๋ค.
API์ ํ๋ฉด์ ๊ณตํต ์ฒ๋ฆฌํด์ผํ ์์๊ฐ ๋ค๋ฅด๋ค.
⇒ ํจํค์ง๋ฅผ ๋ถ๋ฆฌํ์
Post๋ฐฉ์ API ์์ฑ
1๋ฒ ๋ฐฉ์
@PostMapping("/api/v1/members")
public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){
Long id = memberService.join(member);
return new CreateMemberResponse(id);
}
API ์คํ์ ์ํ ๋ณ๋์ DTO๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
๋ณ๋์ ํด๋์ค๋ฅผ ์ ๋ง๋ค์ด๋ ๋๋ ํธํ ๊ฒ ๊ฐ์ง๋ง
์ธ๋ถ์์ ์ค๋ json์ ๋ฐ์ธ๋ฉ ๋ฐ์์ฐ๋ฉด ๋์ค์ ํฐ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๐ก API๋ฅผ ๋ง๋ค ๋๋ Entity๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ง ๋ง์!
๋ํ Entity๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
2๋ฒ ๋ฐฉ์
@PostMapping("/api/v2/members")
public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request){
Member member = new Member();
member.setName(request.getName());
Long id = memberService.join(member);
return new CreateMemberResponse(id);
}
2๋ฒ ๋ฐฉ์์ ์จ์ผ ํ๋ ์ด์
์ค๊ฐ์ ํ๋ผ๋ฏธํฐ์ entity๋ฅผ ํ ๋ฒ ๋งคํํด์ฃผ๊ธฐ ๋๋ฌธ์
entity ๋ด์ฉ์ด ๋ฐ๋๋ฉด ๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ํ ๋ณ๋์ innerclass๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ ์ง ๋ณด์์ ๋งค์ฐ ์ฉ์ดํ๋ค.
๐ก ํ๋ผ๋ฏธํฐ๋ก Entity๋ฅผ ๋๊ธฐ๋ฉด API ๋ฌธ์๋ฅผ ํ์ธํ์ง ์๊ณ ์๋ ํด๋น Entity์ ์ด๋ ๋ถ๋ถ์ด ํ๋ผ๋ฏธํฐ๋ก ๋์ด๊ฐ๋์ง ์ ์ ์๋ค. ⇒ Side Effect๊ฐ ๋ํ๋ ์ ์๋ค.
'Spring > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Intellij ์ ์ฉํ ๋จ์ถํค (0) | 2023.01.22 |
---|---|
Querydsl (Unable to load class 'com.mysema.codegen.model.Type') ์ค๋ฅ ํด๊ฒฐ (0) | 2023.01.22 |