From 375d6c6c580631df9161ebbaea430a9af93478ba Mon Sep 17 00:00:00 2001 From: Jinwoo Park Date: Wed, 31 Jul 2024 14:14:59 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EA=B8=B0=EB=B3=B8=20=EC=9D=91?= =?UTF-8?q?=EB=8B=B5=EC=9D=84=20=EC=9C=84=ED=95=9C=20Base,success,error=20?= =?UTF-8?q?Response=20=EA=B0=9D=EC=B2=B4=20=EC=83=9D=EC=84=B1=20=20(#8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat : HttpResponse 반환을 위한 BaseResponse 추상클래스와 Success, Error Response 클래스 생성 (CC-96) * fix : ResponseEntity 내부에 객체를 반환할 시 406에러가 떠서 반환 객체에 Response 추가(CC-96) * refactor : httpMessage가 아닌 반환 값이 존재하지 않으므로 RestController를 사용하지 않음 (CC-96) * feat : Response 객체에 @getter 추가 (CC-96) * feat : createdAt, updateAt 엔티티 컬럼 생성 (CC-96) * rename : health check api 디렉터리 변경 (CC-96) * test : 테스트코드 cicd test (CC-96) * [CC-83] Github Actions CI/CD 파일 작성, Create Dockerfile (#3) (#5) * chore : Github Actions CI/CD 설정 (CC-83) * chore : CI/CD 파일 application.yml 관련 내용 제거, Dockerfile 수정 (CC-83) * chore : CD 부분 도커 이미지 8080포트로 실행 (CC-83) * chore : PR과 PUSH에 따른 CI/CD 분리 (CC-83) * feat : S3 이미지 업로드 api 생성, IAM role을 활용한 ec2 권한 부여 (CC-90) (#6) * chore : 환경변수 관리를 위한 S3.yml을 깃 이그노어 * chore : 환경변수 관리를 위한 S3.yml을 깃 이그노어 * chore : 환경변수 관리를 위한 S3.yml을 깃 이그노어 (CC-90) * chore : 환경변수 관리를 위한 S3.yml을 깃 이그노어 (CC-90) * feat : 멀티파트 형태의 이미지를 받아 S3에 업로드하는 로직 및 컨트롤러 생성 (CC-90) * refactor : IAM role을 사용하여 ec2에 s3 접근 권한을 부여하도록 로직 수정 (CC-90) * del : 중복된 health test controller 삭제 (CC-96) --------- Co-authored-by: ikjunoh --- .../controller/HealthTestController.java | 16 ++++++++++++ .../global/dto/response/BaseResponse.java | 13 ++++++++++ .../global/dto/response/ErrorResponse.java | 11 ++++++++ .../global/dto/response/SuccessResponse.java | 22 ++++++++++++++++ .../caecae/global/entity/TimeStampEntity.java | 11 ++++++++ .../caecae/CaecaeApplicationTests.java | 26 +++++++++---------- 6 files changed, 86 insertions(+), 13 deletions(-) create mode 100644 src/main/java/ai/softeer/caecae/global/controller/HealthTestController.java create mode 100644 src/main/java/ai/softeer/caecae/global/dto/response/BaseResponse.java create mode 100644 src/main/java/ai/softeer/caecae/global/dto/response/ErrorResponse.java create mode 100644 src/main/java/ai/softeer/caecae/global/dto/response/SuccessResponse.java create mode 100644 src/main/java/ai/softeer/caecae/global/entity/TimeStampEntity.java diff --git a/src/main/java/ai/softeer/caecae/global/controller/HealthTestController.java b/src/main/java/ai/softeer/caecae/global/controller/HealthTestController.java new file mode 100644 index 0000000..5b1838c --- /dev/null +++ b/src/main/java/ai/softeer/caecae/global/controller/HealthTestController.java @@ -0,0 +1,16 @@ +package ai.softeer.caecae.global.controller; + +import ai.softeer.caecae.global.dto.response.SuccessResponse; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class HealthTestController { + @GetMapping("/api/health") + public ResponseEntity> healthTest() { + return ResponseEntity.ok(new SuccessResponse<>(1000,"api health test에 성공했습니다.","health test v1")); + } + +} + diff --git a/src/main/java/ai/softeer/caecae/global/dto/response/BaseResponse.java b/src/main/java/ai/softeer/caecae/global/dto/response/BaseResponse.java new file mode 100644 index 0000000..d9952ef --- /dev/null +++ b/src/main/java/ai/softeer/caecae/global/dto/response/BaseResponse.java @@ -0,0 +1,13 @@ +package ai.softeer.caecae.global.dto.response; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public abstract class BaseResponse { + // 커스텀 응답 코드 종류 + private int responseCode; + // 응답 정보를 담은 메시지 + private String message; +} diff --git a/src/main/java/ai/softeer/caecae/global/dto/response/ErrorResponse.java b/src/main/java/ai/softeer/caecae/global/dto/response/ErrorResponse.java new file mode 100644 index 0000000..265e29f --- /dev/null +++ b/src/main/java/ai/softeer/caecae/global/dto/response/ErrorResponse.java @@ -0,0 +1,11 @@ +package ai.softeer.caecae.global.dto.response; + +import lombok.Getter; + +@Getter +public class ErrorResponse extends BaseResponse{ + public ErrorResponse(int responseCode, String message) { + super(responseCode, message); + } + +} diff --git a/src/main/java/ai/softeer/caecae/global/dto/response/SuccessResponse.java b/src/main/java/ai/softeer/caecae/global/dto/response/SuccessResponse.java new file mode 100644 index 0000000..24e12bb --- /dev/null +++ b/src/main/java/ai/softeer/caecae/global/dto/response/SuccessResponse.java @@ -0,0 +1,22 @@ +package ai.softeer.caecae.global.dto.response; + +import lombok.Builder; +import lombok.Getter; + +@Getter +public class SuccessResponse extends BaseResponse { + // httpResponse 를 통해 넘겨 줄 응답 데이터 + private T data; + + // 응답코드, 메세지, 반환 데이터를 파라미터로 받는 생성자 + public SuccessResponse(int responseCode, String message, T data) { + super(responseCode, message); + this.data = data; + } + + // 코드 및 메시지를 설정하지 않은 생성자 + public SuccessResponse(T data) { + super(0, "요청 성공 기본 메시지 입니다."); + this.data = data; + } +} diff --git a/src/main/java/ai/softeer/caecae/global/entity/TimeStampEntity.java b/src/main/java/ai/softeer/caecae/global/entity/TimeStampEntity.java new file mode 100644 index 0000000..20aee84 --- /dev/null +++ b/src/main/java/ai/softeer/caecae/global/entity/TimeStampEntity.java @@ -0,0 +1,11 @@ +package ai.softeer.caecae.global.entity; + +import java.time.LocalDateTime; + +//TODO : JPA 의존성 설정 후 Audit, CreatedAt 등 어노테이션 설정 +public abstract class TimeStampEntity { + // 엔티티가 생성된 시간 + private LocalDateTime createdAt; + // 엔티티가 업데이트된 시간 + private LocalDateTime updatedAt; +} diff --git a/src/test/java/ai/softeer/caecae/CaecaeApplicationTests.java b/src/test/java/ai/softeer/caecae/CaecaeApplicationTests.java index a88f16f..6c89729 100644 --- a/src/test/java/ai/softeer/caecae/CaecaeApplicationTests.java +++ b/src/test/java/ai/softeer/caecae/CaecaeApplicationTests.java @@ -1,13 +1,13 @@ -package ai.softeer.caecae; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class CaecaeApplicationTests { - - @Test - void contextLoads() { - } - -} +//package ai.softeer.caecae; +// +//import org.junit.jupiter.api.Test; +//import org.springframework.boot.test.context.SpringBootTest; +// +//@SpringBootTest +//class CaecaeApplicationTests { +// +// @Test +// void contextLoads() { +// } +// +//}