Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HTTP
- 바르셀로나
- 스프링 AOP
- 스페인 준비물
- 코틀린
- 400에러
- 관심지향프로그래밍
- kotiln
- 스페인
- sprintboot
- 아펠가모 선릉
- db index
- 본식후기
- 코틀린 함수
- Srping AOP
- @Component
- c# scv
- 아펠가모
- kopring
- 마드리드
- 코프링
- HTTP #웹기술
- b-tree index
- git명령어
- 아펠가모선릉
- Kotlin
- elk
- http상태코드
- 그라나다
- 세비야
Archives
- Today
- Total
끄적이는 메모장
[Kotlin SpringBoot - 2] Rest API 요청 만들기 (1) 본문
반응형
JDK 11, Spring Boot 2.7.8, IntelliJ IDE를 기준으로 작성 |
@RestController 어노테이션이란
/**
* A convenience annotation that is itself annotated with
* {@link Controller @Controller} and {@link ResponseBody @ResponseBody}.
* <p>
* Types that carry this annotation are treated as controllers where
* {@link RequestMapping @RequestMapping} methods assume
* {@link ResponseBody @ResponseBody} semantics by default.
*
* <p><b>NOTE:</b> {@code @RestController} is processed if an appropriate
* {@code HandlerMapping}-{@code HandlerAdapter} pair is configured such as the
* {@code RequestMappingHandlerMapping}-{@code RequestMappingHandlerAdapter}
* pair which are the default in the MVC Java config and the MVC namespace.
*
* @author Rossen Stoyanchev
* @author Sam Brannen
* @since 4.0
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
...
- 간단한 Controller 클래스를 생성 후 @RestController 어노테이션을 클래스에 선언 후 RestController 어노테이션이 어떻게 구성되어 있는지 살펴보면 위와 같이 구성되어 있는 것을 확인할 수 있음
- 크게 @Controller 어노테이션과 @ResponseBody 어노테이션으로 @RestController 어노테이션이 결합되어 있는 것이 특징인데 여기서 알 수 있는 특징은 @RestController 어노테이션을 사용하면 @Controller 어노테이션을 사용할 때 응답 메서드에서 @ResponseBody 어노테이션을 사용했던 내용을 생략할 수 있다는 것
@RestContorller 어노테이션을 통해 해당 클래스가 프로젝트의 Rest Api 엔트리포인트임을 선언할 수 있음
import org.springframework.web.bind.annotation.*
@RestController
class SimpleController {
@RequestMapping("/simple1")
fun simpleApi() = "ok"
...
}
REST API 요청 만들기
그럼 실제로 @RestController 클래스 내에서 Rest API의 요청을 만들기 위해서는 크게 아래와 같은 어노테이션을 사용할 수 있음
어노테이션 | 특징 |
@RequestMapping | 경로 지정과 함께 어떤 Method를 사용할 지 지정해야 함 (Method를 지정하지 않는다면 모든 Method) |
@GetMapping @PostMapping @PutMapping @DeleteMapping @PatchMapping |
경로 지정만 하면 됨, 명시적으로 어떤 Method로 요청을 받을지 어노테이션 이름에서 나타남 |
A. @RequestMapping
경로만 지정하여 모든 Method에서 사용가능하도록 할 수 있음, 경로를 여러 개 지정 가능
@RequestMapping("경로")
ex)
@RequestMapping("/simple1")
fun simpleApi() = "ok"
@RequestMapping(path = ["경로1", "경로2", ... ])
ex)
@RequestMapping(path = ["/simple1", "/simple2"])
fun simpleApi() = "ok"
특정 Method에서의 사용을 지정할 수 있으며, 여러 Method에 요청이 Mapping 되도록 할 수 있음
@RequestMapping("경로", method = [Method1, Method2, ... ])
ex)
@RequestMapping("/simple1", method = [RequestMethod.GET, RequestMethod.POST])
fun simpleApi() = "ok"
Method가 겹치지 않는다면 동일한 경로에 대해서 각각 다른 함수에 Mapping이 가능
@RestController
class SimpleController {
@RequestMapping("/simple1", method = [RequestMethod.GET])
fun simpleApi() = "GET"
@RequestMapping("/simple1", method = [RequestMethod.POST])
fun simpleApi2() = "POST"
}
> 복수의 Method로 하나의 함수에 Mapping하여 처리하는 Api인 경우 @RequestMapping 어노테이션으로 처리가 유리
B. @{Method}Mapping
어노테이션에서 사용할 Mehtod가 정의된 상태 경로만 지정하여 요청을 Mapping할 수 있음
@GetMapping("경로")
@PostMapping("경로")
@PutMapping("경로")
@DeleteMapping("경로")
@PatchMapping("경로")
ex)
@RestController
class SimpleController {
@PostMapping("/simple1")
fun simplePost() = "ok"
@PutMapping("/simple2")
fun simplePut() = "ok"
@GetMapping("/simple2")
fun simpleGet() = "ok"
@DeleteMapping(path = ["/simple1","/simple2"])
fun simpleDelete() = "ok"
}
> @RequestMapping에 의해 형태가 간단하며 복수의 Method에서 처리되는 요청인 경우 명시적인 처리에 유리
반응형
'Kotlin > Kotlin SpringBoot' 카테고리의 다른 글
[Kotlin SpringBoot - 1] 프로젝트 만들기 (0) | 2023.05.01 |
---|