@RestController
@RequestMapping("/test")
public class TestController{
}
Controller 클래스 위에 @RestController과 @RequestMapping("/요청url")을 작성
GET의 경우
@GetMapping("/요청url")을 메소드 상단에 붙인다.
@RestController
@RequestMapping("/test")
public class TestController{
@GetMapping("/ex01")
//int data01 앞에 @ReqeustParam이 생략되어있어, 알아서 변수에 요청 파라미터 값이 설정된다.
public String ex01(int data01, String data02) {
System.out.println(data01);
System.out.println(data02);
return "ex01";
}
}

@RequestParam은 따로 붙이지 않아도 생략되어 붙으므로 매개변수만 작성해주면 된다.
입력 폼 : http://localhost:8080/test/ex01?data01=123&data02=qwer
//변수가 많아지면 여러 변수를 다 저장할 수 있는 클래스를 만들어서 사용 = DTO
@RestController
@RequestMapping("/test")
public class TestController{
@GetMapping("/ex02")
public String ex02(DataDto dataDto) {
System.out.println(dataDto.getData01());
System.out.println(dataDto.getData02());
System.out.println(dataDto.getData03());
System.out.println(dataDto.getData04());
System.out.println(dataDto.getData05());
return "ex02";
}
}

DataDto 클래스를 통해 선언한 변수에 자동으로 저장되도록 설정
입력 폼 : http://localhost:8080/test/ex01?data01=1&data02=2
콘솔을 보면 data1과 data2는 각각 1과 2가, 나머지는 값을 입력하지 않아 0으로 저장된 것을 확인할 수 있다.
@RestController
@RequestMapping("/test")
public class TestController{
//경로에 데이터를 포함시키는 방법
//단, 많은 데이터가 아니라 간단한 숫자 또는 문자 한두 개 정도
@GetMapping("/ex05/{id}")
public String ex05(@PathVariable int id) {
System.out.println(id);
return "ex05";
}
}

입력 폼 : http://localhost:8080/test/ex05/1
?와=가 아닌 / 하나만으로도 id에 데이터가 삽입된다.
@PathVariable은 POST 방식에서도 사용 가능하다.
@RestController
@RequestMapping("/test")
public class TestController{
// 응답용 DTO 클래스를 만들고 객체를 생성,
// 객체의 변수에 값을 저장하고 컨트롤러의 메소드가 return하면 알아서 json 형태로 변경해준다.
@GetMapping("/ex01")
public ResponseDto ex01() {
ResponseDto responseDto = new ResponseDto();
responseDto.setId(1);
responseDto.setName("test01");
responseDto.setMessage("zzzzzz");
return responseDto;
}
}

이는 사용자에게서 parmas를 받는다기 보다는 해당 Controller가 수행되면서 서버 자체에서 세팅한 값을 전달할 때 사용할 수 있다. (1-3중 편한 방법을 선택해 params를 받는 형식으로도 변환 가능)
POST의 경우
@PostMapping("/요청url")을 메소드 상단에 붙인다.
POST방식은 클라이언트가 HTTP Body에 데이터를 포함시켜서 보낸다.
@RestController
@RequestMapping("/test")
public class TestController{
@PostMapping("/ex03")
public String ex03(int data01, String data02) {
System.out.println(data01);
System.out.println(data02);
return "ex03";
}
}

그냥 매개변수로 보낼 때 클라이언트는 form-data 형태로 보내야한다.
@RestController
@RequestMapping("/test")
public class TestController{
@PostMapping("/ex04")
public String ex04(@RequestBody DataDto dataDto) {
System.out.println(dataDto.getData01());
System.out.println(dataDto.getData02());
return "ex04";
}
}

@RequestBody 없이 데이터를 보냈을 때 오류가 나는 모습

@RequestBody를 붙여 정상적으로 데이터가 들어오는 모습
클라이언트가 HTTP Body에 JSON 형태의 데이터를 보내려면 매개변수 앞에 @RequestBody를 추가해야한다.
@RestController
@RequestMapping("/test03")
public class Test03Controller {
//클라이언트로부터 데이터를 전달받는 방법
//매개변수를 이용하는 방법
@GetMapping("/ex01")
//int data01 앞에 @ReqeustParam이 생략되어있어, 알아서 변수에 요청 파라미터 값이 설정된다.
public String ex01(int data01, String data02) {
System.out.println(data01);
System.out.println(data02);
return "ex01";
}
//변수가 많아지면 여러 변수를 다 저장할 수 있는 클래스를 만들어서 사용 = DTO
@GetMapping("/ex02")
public String ex02(DataDto dataDto) {
System.out.println(dataDto.getData01());
System.out.println(dataDto.getData02());
System.out.println(dataDto.getData03());
System.out.println(dataDto.getData04());
System.out.println(dataDto.getData05());
return "ex02";
}
//POST방식은 클라이언트가 HTTP Body에 데이터를 포함시켜서 보낸다.
//그냥 매개변수로 받을 때 클라이언트가 form-data 로 보내야지 받을 수 있다.
@PostMapping("/ex03")
public String ex03(int data01, String data02) {
System.out.println(data01);
System.out.println(data02);
return "ex03";
}
//클라이언트가 HTTP Body에 JSON 형태로 데이터를 포함해서 보내면
//매개변수 앞에 @RequestBody를 추가해야한다.
@PostMapping("/ex04")
public String ex04(@RequestBody DataDto dataDto) {
System.out.println(dataDto.getData01());
System.out.println(dataDto.getData02());
return "ex04";
}
//경로에 데이터를 포함시키는 방법
//단, 많은 데이터가 아니라 간단한 숫자 또는 문자 한두 개 정도
@GetMapping("/ex05/{id}")
public String ex05(@PathVariable int id) {
System.out.println(id);
return "ex05";
}
}