Book-Review/Programing
스프링 부트 핵심 가이드 (3) - API를 작성하는 다양한 방법
GeonWoo Kim
2022. 8. 12. 14:16
5.2 GET API
- 리소스 조회
- RequestMapping
- GetMapping
- PostMapping
- PutMapping
- DeleteMapping
- PathVariable
- RequestParam
@Tag(name = "GetController")
@RestController
@RequiredArgsConstructor
@RequestMapping("/five/v1/")
public class GetController {
private final FiveService fiveService;
@Operation(summary = "pathVariableExample")
@GetMapping("/person/{name}")
public ResponseEntity<Person> pathVariableExample(@Parameter(description = "이름 입력") @PathVariable String name) {
return ResponseEntity.status(HttpStatus.ACCEPTED).body(fiveService.getNamedPerson(name));
}
@Operation(summary = "requestParamExample")
@GetMapping("/person/request")
public ResponseEntity<Person> requestParamExample(@Parameter(description = "이름 입력") @RequestParam String name) {
return ResponseEntity.status(HttpStatus.OK).body(fiveService.getNamedPerson(name));
}
}
5.3 POST API
- 리소스 생성
- RequestBody
- DTO
@Tag(name = "PostController")
@RestController
@RequestMapping("/five/v1")
@RequiredArgsConstructor
public class PostController {
private final FiveService fiveService;
@Operation(description = "생성요청")
@PostMapping("/person")
public ResponseEntity<Person> requestBodyExample(@Parameter(description = "생성요청") @RequestBody Person person) {
return ResponseEntity.status(HttpStatus.ALREADY_REPORTED).body(person);
}
}
5.4 PUT API
- 리소스 업데이트
- RequestBody
- ResponseEntity
@Tag(name = "PutController")
@RestController
@RequestMapping("/five/v1")
@RequiredArgsConstructor
public class PutController {
private final FiveService fiveService;
@PutMapping("/person")
public ResponseEntity<Person> putExample(@Parameter(description = "변경할 사람 정보") @RequestBody Person person) {
return ResponseEntity.status(HttpStatus.ACCEPTED).body(fiveService.getSamplePerson());
}
}
5.5 DELETE API
- 리소스 삭제
- RequestParam/PathVariable
@Tag(name = "DeleteController")
@RestController
@RequestMapping("/five/v1")
@RequiredArgsConstructor
public class DeleteController {
private final FiveService fiveService;
@Operation(description = "삭제요청")
@DeleteMapping("/person")
public ResponseEntity<Person> deleteExample(@Parameter(description = "삭제 요청할 사람 정보") @RequestBody Person person) {
return ResponseEntity.status(HttpStatus.OK).body(fiveService.getSamplePerson());
}
}
5.6 Swagger
- 책에서 사용하는 springfox-swagger2는 더 이상 사용할 수 없다.(buggy)
- 대신 springdoc-openapi-ui를 사용한다.
5.7 Logback
- logback-spring.xml