@RestController // = @ResponseBody + @Controller
@RequestMapping("test")
public class TestController {
// 0. HTTP - ResponseEntity로 응답 ( ResponseDTO + HTTP Status나 Header를 조작 )
@GetMapping("/testResEntity")
public ResponseEntity<?> testControllerResEntity() {
List<String> list = new ArrayList<>();
list.add("hey, this is Response Entity. ");
ResponseDTO<String> res = ResponseDTO.<String>builder().data(list).build();
// return ResponseEntity.badRequest().body(res);
return ResponseEntity.ok().body(res);
}
// 1. HTTP - ResponseBody에 JSON 형식으로 담아서 응답
@GetMapping("/testResBody")
public ResponseDTO<String> testControllerResBody() {
List<String> list = new ArrayList<>();
list.add("Hello , receive my ResponseDTO");
ResponseDTO<String> res = ResponseDTO.<String>builder().data(list).build();
return res;
}
// 2. HTTP - Request 에 담긴 JSON을 받음
@GetMapping("/testReqBody")
public String testControllerReqBody(@RequestBody TestRequestBodyDTO testRequestBodyDTO) {
return "Hello Req Body, id :" + testRequestBodyDTO.getId() + "msg :" + testRequestBodyDTO.getMsg();
}
// 3. 요청 매개변수를 변수로 매핑
@GetMapping("/testReqParam") // 127.0.0.1:8080/test/testReqParam?id=123
public String testControllerReqParam(@RequestParam(required = false) int id) {
return "okok "+ id;
}
// 4. 경로의 값을 변수로 매핑
@GetMapping("/{id}") // 127.0.0.1:8080/test/123123
public String testControllerWithPath(@PathVariable(required = false) int id) {
return "hello " + id;
}
// 5.
@GetMapping("/testGet")
public String testGetController() {
return "hi test Get";
}
// 6.
@GetMapping
public String testController() {
return "hi";
}
}