package org.springframework.web.bind.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Controller;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
@AliasFor(annotation = Controller.class)
String value() default "";
}
@Controllerμ @ResponsBodyλ₯Ό ν©μΉ κ²μ΄λ€.
package jpabook2.jpashop2.domain.api;
import jpabook2.jpashop2.domain.Member;
import jpabook2.jpashop2.domain.service.MemberService;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
@RestController
@RequiredArgsConstructor
public class MemberApiController {
private final MemberService memberService;
/*
λ±λ‘ V1 : μμ² κ°μΌλ‘ Member μν°ν°λ₯Ό μ§μ λ°λλ€.
*/
@PostMapping("/api/v1/members")
public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){
Long id = memberService.join(member);
return new CreateMemberResponse(id);
}
@Data
static class CreateMemberRequest{
private String name;
}
@Data
static class CreateMemberResponse {
private Long id;
public CreateMemberResponse(Long id) {
this.id = id;
}
}
}
@NotEmpty λ± API κ²μ¦μ μν λ‘μ§μ΄ μΆκ°λλ€.κ²°λ‘
μν°ν°λ₯Ό νλΌλ―Έν°λ‘ λ°μ§λ λ§κ³ , μΈλΆμ λ ΈμΆμν€μ§λ λ§μ.
/*
λ±λ‘ V2 : μμ² κ°μΌλ‘ Member μν°ν° λμ λ³λμ DTOλ₯Ό λ°λλ€.
*/
@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);
}
@Data
static class CreateMemberRequest {
private String name;
}
CreateMemberRequestλ₯Ό Memberμν°ν° λμ RequestBodyμ λ§€ννλ€.