chapter05 - API를 작성 하는 다양한 방법
ch5 핵심적인 구성
- GET, POST ,PUT , DELETE API 만들기
Spring 을 사용하면서 REST의 호출 4가지의 특징으로 GET , POST , PUT , DELETE 가 있다.
이 특징들은 REST API 웹 애플리에키션 을 만들때 가장 기본적인 CRUD의 형태를 만들 수 있는 특징들이다 .
Create ( POST) - Client 요청에 데이터를 전달받아 데이터를 저장하는 방법
Read(GET) - Client 요쳥에 따라 DATA를 보여주는 READ 방법
Update(PUT) - Client 요청에 따라 DATA를 수정 하는 방법
Delete(DELETE) - Client 요청에 따라 DATA를 삭제 하는 방법
REST API 는 모든 공통적으로 Controller 라는 패키지에 생성하여 @RestController 라는 어노테이션으로 작동한다.
Spring 4.3 버전 이후로는 새로나온 어노테이션을 사용하기 때문에
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
위 4개의 어노테이션을 사용한다.
- GET API
책에선 GET API를 만들기전 Spring에서는 Http 에 REST 요청에 필요한 어노테이션을 @RequestMapping 사용한다.
@RequestMapping(value ="/hello", method = RequestMethod.GET)
으로 value 값과 method 로 구분지어 명시적으로 전달한다.
이후 책에서도 위와 같은 방법은 사용하지 않고 @GetMapping 을 사용한다.
- @GetMapping
//http://localhost:8080/api/v1/get-api/name
@GetMapping(value="/name")
public String getName(){
return "Flature";
}
위와 같은 코드로 URL을 그대로 입력하고 요청 할 때 스프링 부트 애플리케이션이 정해진 응답을 반한한다.
GET 방식에 매개변수를 넣는 방법으로는
@PathVariable , @RequestParam 을 사용하여 매개변수를 전달하는 방법이다.
나는 주로 Controller를 작성할때 @RequestParam을 사용한다.
@PathVariable 사용법
//http://localhostL8080/api/v1/get-api/name
@GetMapping(value="/variable/{variable}")
public String getVariable(@PathVariable String variable){
return variable;
}
위와 같이 @PathVariable 은 중괄호를 사용하여 URI에 넣어 사용한다.
@RequestParm 사용법
//http://localhost:8080/api/v1/get-api/request1?name=value1?email=value2&organization=value3
@GetMapping(value = "/request1")
public String getRequestParm1
(
@RequestParam String name,
@RequestParam String email,
@RequestParam String organization
)
{
return name + " " + email + " " + organization;
}
@RequestParam 은 URI 에서 '?'를 기준으로 우측에 '{키} = {값} ' 형태로 구성된 요청을 전송하는 방법이다
키와 @RequestParam 뒤에 적는 이름을 동일하게 설정하기 어렵다면 @PathVariable 을 사용한 방법처럼 value를 매핑하면된다
- POST API
@PostMapping
PostMapping은 데이터를 저장하기 사용 된다.
//http://localhost:8080/api/v1/post-api/member2
@PostMapping(value-"/member2")
public String postMemberDto(@RequestBody MemberDto memberDto){
return memberDto.toString();
}
PostMapping 에서 사용된 @RequestBody 는 JSON 형태를 전달받아 데이터 DTO 객체에 전달하는 방식이다.
위 코드는 MemberDto의 멤버 변수를 요청 메시지의 키와 매핑해 값을 가져온다.
- PUT API
@PutMapping
PutMapping은 데이터를 수정하기위해 사용 된다.
@RequestBody 를 활용한 방법은 위에 PostMapping과 같으므로 생략
@ResponseEntity를 활용하여 PUT메서드를 구현할 수 있다.
@ResponseEntity를 사용하여 리턴타입에 HttpsStatus.ACCEPTED의 응답코드를 200 -> 202 로 가지게 할 수 있게 된다.
//http://localhost:8080/api/v1/put-api/member3
@PutMapping(value = "/member3")
public ResponseEntity<MemberDto> postMemberDto3(@RequestBodt MemberDto memberDto) {
return ResponseEntity.status(HttpStatus.ACCEPTED).body(memberDto);
}
- DELETE API
@DeleteMapping
@DeleteMapping은 데이터를 삭제하기 위사용 된다.
@DeleteMapping 도 간단하게 Post와 같다고 생각하여 @RequestParam 를 활용하여 데이터를 삭제 할 수있다.
//http://localhost:8080/api/v1/delete-api/request1?email=value
@DeleteMapping(value = "/request1")
public String DeleteVariable(@RequestParam String email) {
return “e-mail :” + email;
}
기본적으로 @RequestBody , @RequestParam 를 주로 사용하게 되고 이 매개변수들은 쿼리 스트링으로 전달하여 JpaRepository 에 키값을 활용한 쿼리문으로 다루는 듯 하다.
주저리 주저리 작성하면서 내 기준으로 생략한 부분도 많지만 생략한 부분에서 Swagger / logback 과 같이 코드를 작성하면서 자주 사용하게 된다면 책을 읽어가면서 이해가 되는 부분이 많아지는것 같다.
'스프링부트 핵심가이드' 카테고리의 다른 글
| [북스터디] 스프링 부트 핵심가이드 (ch2~ch4) (0) | 2023.04.24 |
|---|---|
| [북스터디] 스프링 부트 핵심가이드 (ch1) (0) | 2023.04.20 |