Spring Boot: Response 응답에 대해 알아두면 좋을 2가지

김아무개·2023년 5월 3일
0

Spring Boot 🍃

목록 보기
6/95

1. JSON과 HTTP 응답코드 함께 내려주는 방법

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 클래스로 정의되어있다.


2. 컨트롤러 하나에서 HTML 페이지 , json 객체 내려주는 방법

원래는 @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;
    }
}
profile
Hello velog! 

0개의 댓글