@RequestMapping이 붙어 있는 메서드는 Client의 특정 요청이 왔을 때 Spring Framework에 의해 호출된다.
그렇다면 아래 코드처럼 여러 개의 메서드가 있을 때 어떤 메서드가 호출될까?
-> Spring Controller의 메서드들은 URI에 따라 호출이 결정된다.
package com.example.controllerexercise.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping(value = "/hello")
public String hello() {
return "hello";
}
@RequestMapping(value = "/bye")
public String bye() {
return "bye";
}
}
- URI란?
특정 자원에 접근하기 위한 이름 또는 주소를 의미하며 계층으로 표현 가능하다.
- URI 이름 규칙
1. 소문자를 사용한다.
2. 명사 형태로 작성한다.
3. 두 단어 이상 연결하는 경우 '-'를 사용한다.
4. 의미 있는 이름으로 일관성 있게 작성한다.
* 단일 웹 application 내에서 URI는 중복될 수 없다.
ex)
http://localhost:8080/user
http://localhost:8080/hello
http://localhost:8080/bye
기본 도메인 뒤에 이어지는 '/path'를 URI라고 한다.
RequestMapping Annotation에 URI Path 정보를 명시해주면
Client가 요청하는 path 정보에 의해서 어떤 메서드가 호출될지 Spring Framework가 결정한다.
@RequestMapping(value = "/bye")
- @RequestMapping은 Controller 클래스와 Controller 클래스 내부의 메서드에 명시할 수 있다.
클래스 내부의 모든 메서드에 공통적인 path를 적용하려면 Controller 클래스 상단에 RequestMapping을 작성한다.
package com.example.controllerexercise.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/user") //공통적인 path
public class UserController {
@RequestMapping(value = "/member") // /user/member
public String getMemberUser() {
return "I'm a member.";
}
@RequestMapping(value = "/admin") // /user/admin
public String getAdminUser() {
return "I'm an admin.";
}
}
'BackEnd > spring' 카테고리의 다른 글
| [Spring Boot] HTTP Method와 데이터베이스 CRUD (0) | 2023.06.09 |
|---|---|
| [Spring Boot] Request 파라미터 - Query String / Path Parameter / Request Body (0) | 2023.06.07 |
| [Spring Boot] Spring Controller와 Annotaion / @Controller와 @RestController 차이 (0) | 2023.06.07 |
| [Spring Boot] SW 아키텍처 - 계층형 아키텍처 패턴 Layered Architecture (0) | 2023.06.07 |
| [IntelliJ] web server failed to start. port 8080 was already in use. 오류 (0) | 2023.06.06 |