@PathVariable
@RestController
@RequestMapping("test")
public class TestController {
@GetMapping("/{id}")
public String testController1(@PathVariable(required = false) int id) {
return "Hello REST API " + id;
}
|
cs |
쿼리스트링을 넣을 필요없이 단순히 값 하나를 전달하기에 가장 적합함.
@RequestParam
@GetMapping("/")
public String testController2(@RequestParam int id, String title) {
return "Hello REST API " + id + ": " + title;
}
|
cs |
쿼리스트링으로 파라미터를 전달함.
복수의 값을 전달할수 있음.
@RequestBody
@GetMapping("/sendJSON")
public String testController3(@RequestBody TestRequestBodyDto testRequestBodyDto) {
return testRequestBodyDto.getId() + ". Hello REST API " +
" Message: " + testRequestBodyDto.getMessage();
}
|
cs |
public class TestRequestBodyDto {
private int id;
private String message;
}
전달값이 String이나 int같은 기본 자료형이 아닌 객체를 통째로 보낼 때 사용함.
브라우저 주소창에 객체를 입력할수 있는 방법이 없기 때문에 Postman같은 외부 프로그램의 도움을 받음.
Body에 JSON형식으로 입력(상단), 결과값 출력(하단)
@RequestBody로 객체를 서버쪽으로 보냈으면, 서버에서 객체를 반환할때는?
@ResponseBody
@GetMapping("/sendObject")
public ResponseDto<String> testController4() {
List<String> list = new ArrayList<>();
list.add("send ResponseDTO");
ResponseDto<String> response = ResponseDto.<String>builder().data(list).build();
return response;
}
|
cs |
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Data
public class ResponseDto<T> {
private String error;
private List<T> data;
}
@ResponseBody 어노테이션은 보이질 않지만 사실
@RestController
@RequestMapping("test")
public class TestController
클래스를 선언할때 사용한 @RestController 어노테이션에 @ResponseBody가 포함되어 있음.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController
'Spring' 카테고리의 다른 글
OX퀴즈 프로그램 - 4(Controller) (0) | 2022.02.02 |
---|---|
OX퀴즈 프로그램 -3(View, Form) - thymeleaf (0) | 2022.01.26 |
OX퀴즈 프로그램 - 2(Service) (0) | 2022.01.11 |
OX퀴즈 프로그램 - 1(DB,Entity,Repository) (0) | 2022.01.04 |