GW LABS

스프링 부트 핵심 가이드 (3) - API를 작성하는 다양한 방법 본문

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
Comments