@Controller@GET, @POST, @PUT, @DELETE
각각의 HTTP Method에 매핑되는 어노테이션@GetMapping("/api/get") @ResponseBody public String get() { return "GET Method 요청"; }
@RequestMapping
중복되는 URL을 단축시켜줌@Controller @RequestMapping("/api") public class HelloController { @GetMapping("/hello") @ResponseBody public String hello() { return "Hello World!"; } @GetMapping("/get") @ResponseBody public String get() { return "GET Method 요청"; } @PostMapping("/post") @ResponseBody public String post() { return "POST Method 요청"; } @PutMapping("/put") @ResponseBody public String put() { return "PUT Method 요청"; } @DeleteMapping("/delete") @ResponseBody public String delete() { return "DELETE Method 요청"; } }
/resources/static/파일이름.html @GetMapping("/static-hello")
public String hello() {
return "hello.html";
}
``` @GetMapping("/html/redirect")
public String htmlStatic() {
return "redirect:/hello.html";
}
/resources/templates/파일이름.html.html은 생략 가능!)JSON 데이터를 반환하는 법
.html 파일을 찾아 반환해줌@ResponseBody 어노테이션을 추가해줘야함@Controller에서는 return 값이 기본적으로 "HTML 파일 이름"으로 해석됨@ResponseBody가 있다면, Spring이 View를 찾는 게 아니라, 그냥 데이터를 그대로 응답으로 보내라는 것으로 해석함 @ResponseBody
@GetMapping("/json")
public Star test() {
return new Star("Robbie", 95);
}
```@RestController
@Controller + @ResponseBody
- @RestController를 사용하면 해당 클래스의 모든 메서드에 @ResponseBody 어노테이션이 추가되는 효과를 부여할 수 있음
Jackson 라이브러리
:JSON데이터 구조를 처리해주는 라이브러리
- Object를
JSON타입의 String으로 변환해줄 수 있음- JSON 타입의 String을 Object로 변환해줄 수 있음
Jackson과 관련된 API를 제공함으로써, 직접 소스 코드를 작성하여 JSON 데이터를 처리하지 않아도 자동으로 처리할 수 있다.JSON 데이터를 처리해야할 때는 Jackson 라이브러리의 ObjectMapper를 사용할 수 있음JSON 타입의 String으로 변환하기 위해서는 해당 Object의 get Method가 필요함@Test
@DisplayName("Object To JSON : get Method 필요")
void test1() throws JsonProcessingException {
Star star = new Star("Robbie", 95);
ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper
String json = objectMapper.writeValueAsString(star);
// objectMapper의 writeValueAsString 메서드를 사용하여 변환할 수 있음
// 파라미터에 JSON으로 변환시킬 Object의 객체를 주면 됨
System.out.println("json = " + json);
}
JSON 타입의 String을 Object로 변환하기 위해서는 해당 Object에 기본 생성자와 get 혹은 set 메서드가 필요함@Test
@DisplayName("JSON To Object : 기본 생성자 & (get OR set) Method 필요")
void test2() throws JsonProcessingException {
String json = "{\"name\":\"Robbie\",\"age\":95}"; // JSON 타입의 String
ObjectMapper objectMapper = new ObjectMapper(); // Jackson 라이브러리의 ObjectMapper
Star star = objectMapper.readValue(json, Star.class);
// objectMapper의 readValue 메서드를 사용해 변환
// 첫 번째 파라미터는 JSON 타입의 String, 두 번째 파라미터에는 변환할 Object의 class 타입을 줌
System.out.println("star.getName() = " + star.getName());
}