개발놀이터

스프링 HTTP응답 - HTTP API, 메시지 바디에 직접 입력 본문

Spring/Spring

스프링 HTTP응답 - HTTP API, 메시지 바디에 직접 입력

마늘냄새폴폴 2021. 8. 19. 11:34

*HTTP 응답 - HTTP API, 메시지 바디에 직접 입력

-response.getWriter를 이용한 출력

@GetMapping("/response-body-string-v1")
    public void responseBodyV1(HttpServletResponse response) throws IOException {
        response.getWriter().write("ok");
    }


-ResponseEntity를 이용한 출력 (상태코드 같이 출력 가능)

@GetMapping("/response-body-string-v2")
    public ResponseEntity<String> responseBodyV2(HttpServletResponse response) {
        return new ResponseEntity<>("ok", HttpStatus.OK);
    }


-@ResponseBody를 붙여서 그냥 메시지 바디에 메시지를 콱 박아서 전송하는 방식

@ResponseBody
    @GetMapping("/response-body-string-v3")
    public String responseBodyV3(HttpServletResponse response) {
        return "ok";
    }


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ일반 텍스트ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

-ResponseEntity를 이용한 json 전송방식

@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);
    }


-반환타입을 HelloData로 전송하는 방식

@ResponseStatus(HttpStatus.OK)
    @ResponseBody
    @GetMapping("/response-body-json-v2")
    public HelloData responseBodyJsonV2() {
        HelloData helloData = new HelloData();
        helloData.setUsername("userA");
        helloData.setAge(20);

        return helloData;
    }


@ResponseBody를 계속 쓰기 귀찮으면 클래스레벨로 올려서 적으면 된다. 클래스 레벨로 올려 적으면 @Controller와 만나게 되는데 이 둘을 합친 것이 바로 @RestController이다. API를 만들 때는 @RestController를 붙이자