HTTP 요청 처리 - @RequestMapping
컨트롤러에 @RestController와 @RequestMapping 을 붙여서 내부에 선언되는 메소드에서 사용할 공통 URL을 설정한다.
@Controller
@RequestMapping("/test01")
public class Test01Controller {
private final Test01Service test01Service;
public Test01Controller(Test01Service test01Service) {
this.test01Service = test01Service;
}
}
컨트롤러 내부에서는 각 HTTP 메소드에 맞는 어노테이션을 사용하면 된다.
@GetMapping
GET 요청에 대한 처리를 할 때 사용한다.
@Controller
@RequestMapping("/test01")
public class Test01Controller {
@GetMapping("/ex01")
public void controllerEx01() {
System.out.println("serviceEx01");
}
}
위의 메소드(controllerEx01)를 실행하려면 /test01/ex01로 get 요청을 보내면 된다.
@PostMapping
POST 요청에 대한 처리를 할 때 사용한다.
@Controller
@RequestMapping("/test01")
public class Test01Controller {
@PostMapping("/ex02")
public void controllerEx02() {
System.out.println("serviceEx02");
}
}
위의 메소드(controllerEx02)를 실행하려면 /test01/ex02 로 post 요청을 보내면 된다.
서버가 클라이언트로부터 데이터를 전달받는 방법
1. 파라미터를 이용하는 방법 (GET)
요청 URL 뒤에 파라미터를 이용해서 데이터를 넘겨준다.
[요청 URL]?변수이름01=값01&변수이름02=값02
메소드의 매개변수 앞에 @RequestParam이 생략되어 있어 알아서 변수에 요청 파라미터의 값이 설정된다.
@GetMapping("/ex01")
public String ex01(
/*@RequestParam*/
int data01,
String data02) {
System.out.println(data01);
System.out.println(data02);
return "ex01";
}
2. DTO를 이용하는 방법 (GET)⭐
변수가 많아지면 여러 변수를 다 저장할 수 있는 클래스를 만들어서 사용한다.
DTO = 여러 변수를 저장할 수 있는 클래스
GET 방식에서 가장 많이 사용할 방식이다.
public class DataDto {
private int data01;
private int data02;
private int data03;
private int data04;
private int data05;
private int data06;
private int data07;
private int data08;
private int data09;
private int data10;
// getter, setter 생략
}
@RestController
@RequestMapping("/test03")
public class Test03Controller {
@GetMapping("/ex02")
public String ex02(DataDto dto) {
System.out.println(dto.getData01());
System.out.println(dto.getData02());
System.out.println(dto.getData03());
System.out.println(dto.getData04());
System.out.println(dto.getData05());
System.out.println(dto.getData06());
System.out.println(dto.getData07());
System.out.println(dto.getData08());
System.out.println(dto.getData09());
System.out.println(dto.getData10());
return "ex02";
}
}
3. 경로에 데이터를 포함시키는 방법 (GET) ⭐
간단한 숫자 또는 문자 한두 개 정도 전달 받을 때 사용한다.
메소드의 매개변수 앞에 @PathVariable 을 붙여줘야 한다.
GET 방식에서 자주 사용하는 방식이다.
@GetMapping("/ex05/{id}")
public String ex05(@PathVariable int id) {
System.out.println(id);
return "ex05";
}
4. HTTP Body의 form-data로 받는 방법 (POST)
POST 방식은 클라이언트가 Http Body에 데이터를 포함시켜서 보낸다.
그냥 매개변수로 받으려면 클라이언트가 form-data로 보내야 받을 수 있다.
@PostMapping("/ex03")
public String ex03(int data01, String data02) {
System.out.println(data01);
System.out.println(data02);
return "ex03";
}
5. HTTP Body에 JSON 형태로 받는 방법 (POST) ⭐
POST 방식에서 가장 많이 사용할 방식이다.
클라이언트가 Http Body에 JSON 형태로 데이터를 포함해서 보내면
메소드의 매개변수 앞에 @RequestBody를 추가해줘야 한다.
앞에 @RequestBody를 붙이지 않으면 데이터가 제대로 전달이 되지 않는다.
@RequestBody를 추가해줘야 데이터를 잘 전달받을 수 있다.
@PostMapping("/ex04")
public String ex04(@RequestBody DataDto dto) {
System.out.println(dto.getData01());
System.out.println(dto.getData02());
System.out.println(dto.getData03());
return "ex04";
}
'BE > Spring Boot' 카테고리의 다른 글
[Spring Boot] JPA란? / JPA 구성 요소(Entity, Repository) / JPA로 DB 다루기 (1) | 2025.02.06 |
---|---|
[Spring Boot] 서버 -> 클라이언트로 데이터 전달 (ResponseEntity) (0) | 2025.02.05 |
[Spring Boot] IntelliJ에서 스프링 부트 프로젝트 생성 / 초기 설정 (0) | 2025.02.05 |
[Spring Boot] Controller와 RestController 차이 (0) | 2025.02.05 |
[Spring Boot] 컴포넌트 스캔 / Bean (0) | 2025.02.04 |