ObjectBodyResponseResolver.java
package sprout.mvc.http.resolvers;
import sprout.beans.annotation.Component;
import sprout.beans.annotation.Order;
import sprout.mvc.http.HttpRequest;
import sprout.mvc.http.ResponseEntity;
import sprout.mvc.http.ResponseResolver;
@Component
@Order(3)
public class ObjectBodyResponseResolver implements ResponseResolver {
@Override
public boolean supports(Object returnValue) {
// ResponseEntity가 아니고 void나 null이 아닌 모든 객체를 처리
return returnValue != null && !(returnValue instanceof ResponseEntity);
}
@Override
public ResponseEntity<?> resolve(Object returnValue, HttpRequest request) {
// POST 요청이었다면 201 Created 반환
if ("POST".equalsIgnoreCase(request.getMethod().name())) {
return ResponseEntity.created(returnValue);
}
// 그 외 (GET, PUT, DELETE 등)는 200 OK 반환
return ResponseEntity.ok(returnValue);
}
}