Skip to content

Commit 6cf560b

Browse files
committed
Feat: 공통 응답 추가
1 parent a61f95d commit 6cf560b

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

src/main/java/flipnote/user/global/error/ApiResponse.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ public class ApiResponse<T> {
1616
private final String message;
1717
private final T data;
1818

19+
public static <T> ApiResponse<T> success(T data) {
20+
return ApiResponse.<T>builder()
21+
.status(200)
22+
.data(data)
23+
.build();
24+
}
25+
1926
public static ApiResponse<Void> error(ErrorCode errorCode) {
2027
return ApiResponse.<Void>builder()
2128
.status(errorCode.getStatus())
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package flipnote.user.global.error;
2+
3+
import org.springframework.core.MethodParameter;
4+
import org.springframework.http.MediaType;
5+
import org.springframework.http.converter.HttpMessageConverter;
6+
import org.springframework.http.server.ServerHttpRequest;
7+
import org.springframework.http.server.ServerHttpResponse;
8+
import org.springframework.web.bind.annotation.RestControllerAdvice;
9+
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
10+
11+
@RestControllerAdvice(basePackages = "flipnote.user")
12+
public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
13+
14+
@Override
15+
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
16+
return !(returnType.getParameterType().isAssignableFrom(ApiResponse.class));
17+
}
18+
19+
@Override
20+
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,
21+
Class<? extends HttpMessageConverter<?>> selectedConverterType,
22+
ServerHttpRequest request, ServerHttpResponse response) {
23+
if (body == null) {
24+
return null;
25+
}
26+
if (body instanceof ApiResponse<?>) {
27+
return body;
28+
}
29+
return ApiResponse.success(body);
30+
}
31+
}

0 commit comments

Comments
 (0)