-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
17 changed files
with
259 additions
and
23 deletions.
There are no files selected for viewing
4 changes: 4 additions & 0 deletions
4
weather-service/src/main/java/com/waither/weatherservice/controller/WeatherController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
package com.waither.weatherservice.controller; | ||
|
||
public class WeatherController { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...erservice/dto/AccuweatherTestRequest.java → ...e/dto/request/AccuweatherTestRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...er/weatherservice/dto/AirTestRequest.java → ...erservice/dto/request/AirTestRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...atherservice/dto/ForeCastTestRequest.java → ...vice/dto/request/ForeCastTestRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
...er/weatherservice/dto/MsgTestRequest.java → ...erservice/dto/request/MsgTestRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
7 changes: 7 additions & 0 deletions
7
weather-service/src/main/java/com/waither/weatherservice/dto/request/WeatherRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.waither.weatherservice.dto.request; | ||
|
||
import lombok.Builder; | ||
|
||
@Builder | ||
public record WeatherRequest() { | ||
} |
7 changes: 7 additions & 0 deletions
7
weather-service/src/main/java/com/waither/weatherservice/dto/response/WeatherResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package com.waither.weatherservice.dto.response; | ||
|
||
import lombok.Builder; | ||
|
||
@Builder | ||
public record WeatherResponse() { | ||
} |
15 changes: 15 additions & 0 deletions
15
weather-service/src/main/java/com/waither/weatherservice/exception/CustomException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package com.waither.weatherservice.exception; | ||
|
||
import com.waither.weatherservice.response.status.BaseErrorCode; | ||
|
||
import lombok.Getter; | ||
|
||
@Getter | ||
public class CustomException extends RuntimeException { | ||
|
||
private final BaseErrorCode errorCode; | ||
|
||
public CustomException(BaseErrorCode errorCode) { | ||
this.errorCode = errorCode; | ||
} | ||
} |
64 changes: 64 additions & 0 deletions
64
...er-service/src/main/java/com/waither/weatherservice/exception/GlobalExceptionHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package com.waither.weatherservice.exception; | ||
|
||
import java.util.HashMap; | ||
import java.util.List; | ||
import java.util.Map; | ||
|
||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.validation.FieldError; | ||
import org.springframework.web.bind.MethodArgumentNotValidException; | ||
import org.springframework.web.bind.annotation.ExceptionHandler; | ||
import org.springframework.web.bind.annotation.RestControllerAdvice; | ||
|
||
import com.waither.weatherservice.response.ApiResponse; | ||
import com.waither.weatherservice.response.ErrorCode; | ||
import com.waither.weatherservice.response.status.BaseErrorCode; | ||
|
||
import lombok.extern.slf4j.Slf4j; | ||
|
||
@Slf4j | ||
@RestControllerAdvice | ||
public class GlobalExceptionHandler { | ||
|
||
// @Valid 유효성 검사를 실패했을 시 | ||
@ExceptionHandler(MethodArgumentNotValidException.class) | ||
protected ResponseEntity<ApiResponse<Map<String, String>>> handleMethodArgumentNotValidException( | ||
MethodArgumentNotValidException ex | ||
) { | ||
// 실패한 validation 을 담을 Map | ||
Map<String, String> failedValidations = new HashMap<>(); | ||
List<FieldError> fieldErrors = ex.getBindingResult().getFieldErrors(); | ||
// fieldErrors 를 순회하며 failedValidations 에 담는다. | ||
fieldErrors.forEach(error -> failedValidations.put(error.getField(), error.getDefaultMessage())); | ||
ApiResponse<Map<String, String>> errorResponse = ApiResponse.onFailure( | ||
ErrorCode.VALIDATION_FAILED.getCode(), | ||
ErrorCode.VALIDATION_FAILED.getMessage(), | ||
failedValidations); | ||
return ResponseEntity.status(ex.getStatusCode()).body(errorResponse); | ||
} | ||
|
||
// Custom 예외에 대한 처리 | ||
@ExceptionHandler({CustomException.class}) | ||
public ResponseEntity<ApiResponse<Void>> handleCustomException(CustomException e) { | ||
log.warn("[WARNING] Custom Exception : {}", e.getErrorCode()); | ||
BaseErrorCode errorCode = e.getErrorCode(); | ||
return ResponseEntity. | ||
status(errorCode.getHttpStatus()) | ||
.body(errorCode.getErrorResponse()); | ||
} | ||
|
||
@ExceptionHandler({Exception.class}) | ||
public ResponseEntity<ApiResponse<String>> handleAllException(Exception e) { | ||
log.error("[WARNING] Internal Server Error : {} ", e.getMessage()); | ||
BaseErrorCode errorCode = ErrorCode.INTERNAL_SERVER_ERROR_500; | ||
ApiResponse<String> errorResponse = ApiResponse.onFailure( | ||
errorCode.getCode(), | ||
errorCode.getMessage(), | ||
e.getMessage() | ||
); | ||
return ResponseEntity | ||
.status(errorCode.getHttpStatus()) | ||
.body(errorResponse); | ||
} | ||
|
||
} |
9 changes: 9 additions & 0 deletions
9
...r-service/src/main/java/com/waither/weatherservice/exception/WeatherExceptionHandler.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package com.waither.weatherservice.exception; | ||
|
||
import com.waither.weatherservice.response.status.BaseErrorCode; | ||
|
||
public class WeatherExceptionHandler extends CustomException { | ||
public WeatherExceptionHandler(BaseErrorCode errorCode) { | ||
super(errorCode); | ||
} | ||
} |
7 changes: 0 additions & 7 deletions
7
weather-service/src/main/java/com/waither/weatherservice/openapi/OpenApiException.java
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
weather-service/src/main/java/com/waither/weatherservice/response/ApiResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package com.waither.weatherservice.response; | ||
|
||
import org.springframework.http.HttpStatus; | ||
|
||
import com.fasterxml.jackson.annotation.JsonInclude; | ||
import com.fasterxml.jackson.annotation.JsonPropertyOrder; | ||
|
||
import lombok.AccessLevel; | ||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor(access = AccessLevel.PRIVATE) | ||
@JsonPropertyOrder({"code", "message", "result"}) | ||
public class ApiResponse<T> { | ||
|
||
// HTTP 상태 코드나 사용자 정의 코드 | ||
private final String code; | ||
// API 요청에 대한 설명이나 상태 메시지 | ||
private final String message; | ||
// result 값은 null이 아닐 때만 응답에 포함시킨다. | ||
@JsonInclude(JsonInclude.Include.NON_NULL) | ||
// 결과 데이터. (보통 dto -> json 파싱 될 예정) | ||
private T result; | ||
|
||
// 성공한 경우 응답 생성 | ||
public static <T> ApiResponse<T> onSuccess(T result) { | ||
return new ApiResponse<>(String.valueOf(HttpStatus.OK.value()), HttpStatus.OK.getReasonPhrase(), result); | ||
} | ||
|
||
// 성공한 경우 응답 생성 (상태 코드 지정 가능) | ||
public static <T> ApiResponse<T> onSuccess(HttpStatus status, T result) { | ||
return new ApiResponse<>(String.valueOf(status.value()), status.getReasonPhrase(), result); | ||
} | ||
|
||
// 실패한 경우 응답 생성 | ||
public static <T> ApiResponse<T> onFailure(String code, String message, T result) { | ||
return new ApiResponse<>(code, message, result); | ||
} | ||
|
||
// 실패한 경우 응답 생성 (데이터 없음) | ||
public static <T> ApiResponse<T> onFailure(String statusCode, String message) { | ||
return new ApiResponse<>(statusCode, message, null); | ||
} | ||
|
||
} |
43 changes: 43 additions & 0 deletions
43
weather-service/src/main/java/com/waither/weatherservice/response/ErrorCode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package com.waither.weatherservice.response; | ||
|
||
import org.springframework.http.HttpStatus; | ||
|
||
import com.waither.weatherservice.response.status.BaseErrorCode; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
public enum ErrorCode implements BaseErrorCode { | ||
|
||
// 일반적인 ERROR 응답 | ||
BAD_REQUEST_400(HttpStatus.BAD_REQUEST, | ||
"COMMON400", | ||
HttpStatus.BAD_REQUEST.getReasonPhrase()), | ||
UNAUTHORIZED_401(HttpStatus.UNAUTHORIZED, | ||
"COMMON401", | ||
HttpStatus.UNAUTHORIZED.getReasonPhrase()), | ||
FORBIDDEN_403(HttpStatus.FORBIDDEN, | ||
"COMMON403", | ||
HttpStatus.FORBIDDEN.getReasonPhrase()), | ||
NOT_FOUND_404(HttpStatus.NOT_FOUND, | ||
"COMMON404", | ||
HttpStatus.NOT_FOUND.getReasonPhrase()), | ||
INTERNAL_SERVER_ERROR_500( | ||
HttpStatus.INTERNAL_SERVER_ERROR, | ||
"COMMON500", | ||
HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase()), | ||
|
||
// 유효성 검사 | ||
VALIDATION_FAILED(HttpStatus.BAD_REQUEST, "VALID400_0", "입력값에 대한 검증에 실패했습니다."); | ||
|
||
private final HttpStatus httpStatus; | ||
private final String code; | ||
private final String message; | ||
|
||
@Override | ||
public ApiResponse<Void> getErrorResponse() { | ||
return ApiResponse.onFailure(code, message); | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
weather-service/src/main/java/com/waither/weatherservice/response/WeatherErrorCode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package com.waither.weatherservice.response; | ||
|
||
import org.springframework.http.HttpStatus; | ||
|
||
import com.waither.weatherservice.response.status.BaseErrorCode; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
@AllArgsConstructor | ||
public enum WeatherErrorCode implements BaseErrorCode { | ||
|
||
WEATHER_EXAMPLE_ERROR(HttpStatus.BAD_REQUEST, "WEAT4000", "날씨 에러입니다."), | ||
WEATHER_OPENAPI_ERROR(HttpStatus.BAD_REQUEST, "WEAT4001", "OpenApi 관련 오류입니다."); | ||
|
||
private final HttpStatus httpStatus; | ||
private final String code; | ||
private final String message; | ||
|
||
@Override | ||
public ApiResponse<Void> getErrorResponse() { | ||
return ApiResponse.onFailure(code, message); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
weather-service/src/main/java/com/waither/weatherservice/response/status/BaseErrorCode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package com.waither.weatherservice.response.status; | ||
|
||
import org.springframework.http.HttpStatus; | ||
|
||
import com.waither.weatherservice.response.ApiResponse; | ||
|
||
public interface BaseErrorCode { | ||
|
||
HttpStatus getHttpStatus(); | ||
|
||
String getCode(); | ||
|
||
String getMessage(); | ||
|
||
ApiResponse<Void> getErrorResponse(); | ||
} |