스프링

[Spring] ResponseEntity 에 대하여

nan2 2022. 10. 10. 12:30
반응형

ResponseEntity란 간단하게 말하면, ResponseEntity를 사용하여 컨트롤러에서 Http 요청에 대한 응답 상태코드를 원하는 상태코드로 보낼 수 있다.

 

1. 원하는 Status 전달

 

사용방법

    @PostMapping("/users")
    public ResponseEntity<User> createUser(@RequestBody User user){
        User savedUser = userDaoService.save(user);
        return new ResponseEntity(HttpStatus.CREATED);	//201 created 상태코드 반환
    }

 

postman API 호출 결과(응답)

- Status: 201 Created 확인!

 

 

 

2. 원하는 Status + URI 전달

Http 요청에 대하여 사용자에게 어떠한 URI를 전달하고 싶은 경우 ServletUriComponentsBuilder 클래스 이용한 ResponseEntity

 

※ServletUriComponentsBuilder 사용법

 

[Spring] ServletUriComponentsBuilder 사용하여 사용자에게 URI 전달하기

사용자에게 특정한 URI를 전달할때 ServletUriComponentsBuilder 클래스를 사용한다. ServletUriComponentsBuilder 반환값은 URI로 받고, 컨트롤러에서 반환 타입은 ResponseEntity로 한다. @PostMapping("/users"..

dev-stack.tistory.com

 

사용방법

@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user){
    User savedUser = userDaoService.save(user);

    URI location = ServletUriComponentsBuilder.fromCurrentRequest()
            .path("/{id}")
            .buildAndExpand(savedUser.getId())
            .toUri();
    return ResponseEntity.created(location).build();        //201 Created 상태코드 반환
}

 

postman API 호출 결과(응답)

- Location(key)에 location 변수에 설정한 값이 들어간것을 확인!

- Status : 201 Created 확인!

 

 

 

3. 원하는 Status + Body 전달

Http 요청에 대하여 원하는 status 와 body에 데이터를 전달

 

사용방법

@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user){
    User savedUser = userDaoService.save(user);
    return new ResponseEntity(savedUser, HttpStatus.CREATED);
}

 

postman API 호출 결과(응답)

 

- Body에 데이터 들어간것 확인!

 

 

4. 원하는 Status + URI + Body 전달

 

사용방법

    @PostMapping("/users")
    public ResponseEntity<User> createUser(@RequestBody User user){
        User savedUser = userDaoService.save(user);

        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setLocation(ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}").buildAndExpand(savedUser.getId()).toUri());
        return new ResponseEntity(savedUser, httpHeaders, HttpStatus.CREATED);
    }

 

postman API 호출 결과(응답)

- Location(key)에 location 변수에 설정한 값이 들어간것을 확인!

- Status : 201 Created 확인!

 

- Body에 데이터 들어간것 확인!

반응형