import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/res")
public class ResponseController {
@PutMapping("/put")
public ResponseEntity<User> put(@RequestBody User user) {
return ResponseEntity.status(HttpStatus.CREATED).body(user);
}
}
ResponseEntity<T>
클래스를 이용해서 HTTP 응답에 대해 다양한 변형을 적용할 수 있다.
ReponseEntity 클래스에서 제공하는 메서드 들 🔻
응답코드는 HttpStatus 라는 ENUM 클래스로 정의되어있다.
원래는 @Controller
어노테이션이 붙은 컨트롤러 페이지에서는 html 뷰페이지만 내려보내고,
json 응답은 @RestController
에서만 내리는게 맞지만,
html과 json을 요구하는 특수한 상황(?)이 오게 된다면 사용할 수 있는 방법이다.
@Controller
public class PageController {
// main.html 반환
@RequestMapping("/main")
public String main() {
return "main.html";
}
// json 객체 반환
@ResponseBody
@GetMapping("/user")
public User user() {
var user = new User(); // 타입 추론! 클래스 이름이 아주 긴 경우 유용하게 쓰인다.
user.setName("zh");
user.setAge(130);
return user;
}
}