실무/[ 기타 ]
[ 웹 개발 ] 반환 컨트롤러 String VS ResponseEntity<String> 차이
glenn93
2024. 8. 22. 13:14
728x90
반응형
String을 반환하는 컨트롤러와 ResponseEntity<String>을 반환하는 컨트롤러는 Spring에서 HTTP 응답을 처리하는 방식에 있어 중요한 차이가 있다. 이 차이점은 더 나은 HTTP 응답 처리와 API 설계에서 중요한 역할을 하기에 알아본다.
1. String 반환 컨트롤러
@RequestMapping("/some-endpoint")
public String someMethod() {
String result = "some result";
return result;
}
특징
- 간단하고 직관적: 단순 문자열을 반환하므로 코드가 간결
- 제한적인 HTTP 제어: HTTP 상태 코드, 헤더 등을 직접 설정할 수 없다. 기본적으로 상태 코드는 200 OK로 반환.
- 주로 간단한 응답에 사용: Ajax 요청에서 단순히 텍스트만 필요할 때 사용될 수 있지만, 복잡한 API 응답이나 상태 코드를 제어해야 할 때는 한계 존재.
2. ResponseEntity<String> 반환 컨트롤러
@RequestMapping("/some-endpoint")
public ResponseEntity<String> someMethod() {
return ResponseEntity.ok("Schedule save/update successfully");
}
이 경우, ResponseEntity를 사용하면 HTTP 응답의 상태 코드, 헤더, 본문을 모두 제어할 수 있다.
특징
- 유연성: HTTP 상태 코드, 헤더, 본문을 모두 명시적으로 설정할 수 있다. 예를 들어, 200 OK, 404 Not Found, 500 Internal Server Error 등의 상태 코드를 지정할 수 있다.
- 더 나은 API 설계: 클라이언트에게 응답의 의미를 더 명확하게 전달할 수 있다. 예를 들어, 성공 시 200 OK, 데이터 생성 시 201 Created, 실패 시 400 Bad Request 등 명확한 상태 코드로 응답할 수 있다.
- RESTful 서비스에 적합: REST API를 설계할 때 더 나은 제어를 제공.
3. 차이점 요약 및 장단점
특징String 반환ResponseEntity 반환
제어 가능성 | 제한적 (주로 응답 본문만 제어) | 고도로 유연 (상태 코드, 헤더, 본문 모두 제어) |
사용 용도 | 간단한 응답, 기본적인 텍스트 반환 시 | REST API 설계, 상태 코드 제어가 필요할 때 |
응답 상태 코드 제어 | 기본 200 OK | 명시적으로 상태 코드를 설정 가능 |
헤더 설정 가능성 | 불가능 | 가능 (예: ResponseEntity.ok().header()) |
선호도 | 간단한 경우에 적합 | 더 나은 API 설계 및 복잡한 응답에 적합 |
4. 어떤 것이 더 좋은가?
- 간단한 텍스트 응답이 필요하고, 상태 코드나 헤더를 제어할 필요가 없는 경우라면, String 반환도 괜찮다.
- 복잡한 응답, 명확한 상태 코드와 헤더 제어가 필요한 경우에는 ResponseEntity<String>을 사용하는 것이 더 좋다. 특히, RESTful API를 설계할 때는 ResponseEntity를 사용하는 것이 권장됨.
결론적으로, ResponseEntity<String>를 사용하는 것이 더 유연하고 API의 상태와 동작을 명확하게 전달할 수 있기 때문에, 일반적으로 더 선호된다. ResponseEntity를 사용하면 응답에 대한 제어를 극대화할 수 있어, 클라이언트와의 통신에서 더 강력한 의미 전달이 가능.
728x90
반응형