Skip to content

Commit

Permalink
Merge pull request #4 from OMZigak/feat/3
Browse files Browse the repository at this point in the history
[feat] Api 공통 응답 형태
  • Loading branch information
tkdwns414 authored Jul 4, 2024
2 parents 7512e6c + 9ac72db commit 4f997c5
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 1 deletion.
2 changes: 1 addition & 1 deletion SERVER_YML
33 changes: 33 additions & 0 deletions src/main/java/org/kkumulkkum/server/advice/ResponseDtoAdvice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package org.kkumulkkum.server.advice;

import org.kkumulkkum.server.dto.common.ResponseDto;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

@RestControllerAdvice(basePackages = "org.kkumulkkum.server")
public class ResponseDtoAdvice implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
return !(returnType.getParameterType() == ResponseDto.class)
&& MappingJackson2HttpMessageConverter.class.isAssignableFrom(converterType);
}

@Override
public Object beforeBodyWrite(
Object body,
MethodParameter returnType,
MediaType selectedContentType,
Class<? extends HttpMessageConverter<?>> selectedConverterType,
ServerHttpRequest request,
ServerHttpResponse response
) {
// TODO: error 관련 처리 추가
return ResponseDto.success(body);
}
}
22 changes: 22 additions & 0 deletions src/main/java/org/kkumulkkum/server/controller/TestController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.kkumulkkum.server.controller;

import org.kkumulkkum.server.dto.test.TestDto;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1")
public class TestController {

@GetMapping("/test/void")
public ResponseEntity<Void> testVoid() {
return ResponseEntity.ok().build();
}

@GetMapping("/test/dto")
public ResponseEntity<TestDto> testDto() {
return ResponseEntity.ok(new TestDto("test"));
}
}
10 changes: 10 additions & 0 deletions src/main/java/org/kkumulkkum/server/dto/common/ErrorDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.kkumulkkum.server.dto.common;

public record ErrorDto(
int code,
String message
) {
public static ErrorDto of(int code, String message) {
return new ErrorDto(code, message);
}
}
14 changes: 14 additions & 0 deletions src/main/java/org/kkumulkkum/server/dto/common/ResponseDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.kkumulkkum.server.dto.common;

public record ResponseDto<T> (
T data,
ErrorDto error
) {
public static <T> ResponseDto<T> success(final T data) {
return new ResponseDto<>(data, null);
}

public static <T> ResponseDto<T> fail(ErrorDto error) {
return new ResponseDto<>(null, ErrorDto.of(error.code(), error.message()));
}
}
9 changes: 9 additions & 0 deletions src/main/java/org/kkumulkkum/server/dto/test/TestDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package org.kkumulkkum.server.dto.test;

public record TestDto(
String test
) {
public static TestDto of (String test) {
return new TestDto(test);
}
}

0 comments on commit 4f997c5

Please sign in to comment.