pooney
article thumbnail

 

Rest Api를 구현할 경우 4xx , 5xx , 2xx 등 여러 요청에따른 Status를 사용자에게 전달합니다. 만약 사용자가 존재하지 않는 정보를 요청한 경우 예외가 발생 할 수 있습니다. 예외가 발생하면 서브에서 발생한 에러인 500에러를 전달 할 것입니다. 이러한 status를 변경하여 사용자에게 전달할 수 있는 방법이 있습니다. 그것은 바로 @ResponseStatus를 사용하는 것입니다. 

 

 

 

 

@ResponseStatus 사용전

 

아래는 존재하지 않는 회원을 요청하는 경우로 가정하여 일부러 예외가 발생하는 코드를 작성했습니다.  에러는 error 메세지를 출력하는 ErrorCreate를 만들어 던지겠습니다.  

 

 

TestController 

@RestController
public class TestController {
	@GetMapping("/user")
    public String user(String id){
         throw new ErrorCreate(String.format("존재하지 않는 회원 [ID : %s]", id));

    }
}

 

 

ErrorCreate

public class ErrorCreate extends RuntimeException {
    public ErrorCreate(String errormsg) {
        super(errormsg);
    }
}

 

결과

http://localhost:9001/user?id=15 를 요청한 결과 예외가 발생하면서 status 500 이란 코드를 받은것을 확인 할 수 있습니다. 

 

 

 

하지만 이것은 클라이언트가  존재하지 않는 유저정보를 요청 했기 때문에 잘못된 요청을 한 것이기 status는 500이 아닌  4xx 전달 되어야 합니다. status를 변경하기 위하여 @ResponseStatus 를 사용하겠습니다. 

 

 

 

 

 

 

 

 

 

 

@ResponseStatus 사용

 

 

ErrorCreate

//Status 코드 어노테이션 추가 
@ResponseStatus(HttpStatus.BAD_REQUEST)
public class ErrorCreate extends RuntimeException {
    public ErrorCreate(String errormsg) {
        super(errormsg);
    }
}

 

결과 

위와 동일하게 요청한 결과 status가 400으로 변경되어 전달받는 것을 확인 할 수 있습니다. 이러한 방법으로 적절한 Rest API를 만들어 사용자에게 정확한 정보를 전달 할 수 있습니다. 

 

profile

pooney

@pooney

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!