Web/Spring

스프링 HTTP 응답

Jinn 2023. 11. 19. 22:06

스프링(서버)에서 응답 데이터를 만드는 방법

 

- 정적 리소스

정적인 HTML, CSS, Javascript를 제공할 때 정적 리소스를 사용한다.

 

- 뷰 템플릿 사용

동적인 HTML을 제공할 때 뷰 템플릿을 사용한다.

 

- HTTP 메시지 사용

HTTP API를 제공하는 경우 HTTP 메시지 바디에 JSON 등의 형식으로 데이터를 보낸다.

 

 

정적 리소스

 

src/main/resources/static 경로에 파일을 넣어두면 정적 리소스로 제공한다.

 

 

뷰 템플릿

 

src/main/resources/templates 경로를 기본 뷰 템플릿 경로로 사용한다.

 

 

HTTP 메시지 바디에 직접 입력(HTTP API)

 

@Slf4j
@Controller
//@RestController
public class ResponseBodyController {

    @GetMapping("/response-body-string-v1")
    public void responseBodyV1(HttpServletResponse response) throws IOException {
        response.getWriter().write("ok");
    }
    
    @GetMapping("/response-body-string-v2")
    public ResponseEntity<String> responseBodyV2() {
        return new ResponseEntity<>("ok", HttpStatus.OK);
    }
    
    @ResponseBody
    @GetMapping("/response-body-string-v3")
    public String responseBodyV3() {
        return "ok";
    }
    
    @GetMapping("/response-body-json-v1")
    public ResponseEntity<HelloData> responseBodyJsonV1() {
        HelloData helloData = new HelloData();
        helloData.setUsername("userA");
        helloData.setAge(20);
        return new ResponseEntity<>(helloData, HttpStatus.OK);
    }
    
    @ResponseStatus(HttpStatus.OK)
    @ResponseBody
    @GetMapping("/response-body-json-v2")
    public HelloData responseBodyJsonV2() {
        HelloData helloData = new HelloData();
        helloData.setUsername("userA");
        helloData.setAge(20);
        return helloData;
    }
}
  • HttpServletResponse 객체 사용
  • ResponseEntity 사용 (TEXT, JSON)
  • @ResponseBody 사용
  • @RestController 사용: 해당 컨트롤러에 모두 @ResponseBody 적용됨