우선 대강 song를 완성해서 그걸 팀장님이 완성한 album에 병합시켜 보기로 했다.
먼저 git에 올라온 파일을 받으려면 git merge를 한 다음
git pull origin dev를 해야 하는데, error: Your local changes to the following files would be overwritten by merge:
src/main/resources/application.yml 라는 에러가 뜨게 되었다. 알아보니 내가 dev를 수정했기 때문에 그걸 업로드 한 뒤에 받아야 한다고 한다. 그래서 git add .과 git commit -m "메시지" 이걸 먼저 하고, 그 뒤에 git pull origin dev를 하니 됬다.
참고로 어데 올렸던 S.A에 대한 피드백이 왔는데,
- {}로 전달하는 Path Parameter가 일부 잘못 표기되어 있습니다. 수정 부탁드립니다. ex) `GET /album/{albumId}/comments}` 라고 왔다. 아마 /album/{albumId}/comment/{commentId}로 된게 잘못 되었던 모양이다.
그리고 Song에 대해선 내가 Dto를 사용하지 않았는데, dto를 사용하는것이 보안에 더 좋다는 모양이라 dto를 만들게 되었다.
그리고 스웨거랑 연결하려면 build.gradle에 implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0")를 넣고
@Configuration
class SwaggerConfig {
@Bean
fun openAPI(): OpenAPI = OpenAPI()
.info(
Info()
.title("Coding Sonyeondan API")
.description("Welcome to Coding Sonyeondan")
.version("1.0.0")
)
}
이게 있어야 연결이 된다. 빼먹지 말자.
그리고 에러 메시지를 나나내는 녀석들도 알게됬는데,
data class ErrorDTO (val message: String?)
이게 에러 메시지를 나타내고
data class ModelNotFoundException(val modelName: String, val id: Long): RuntimeException(
"Model $modelName not found with given id: $id"
)
이게 id를 찾을수가 없으면 발동하고
class UniqueAttributeAlreadyExistException (val modelName: String, val value: String, val attribute: String): RuntimeException(
"$modelName's attribute $attribute $value is already exist"
)
이거는 이미 해당 모델이 존대하는데 중복됬을 경우에 작동하며
@RestControllerAdvice
class GlobalExceptionHandler {
@ExceptionHandler(ModelNotFoundException::class)
fun handleModelNotfoundException(e: ModelNotFoundException): ResponseEntity<ErrorDTO>
{
return ResponseEntity
.status(HttpStatus.NOT_FOUND)
.body(ErrorDTO(e.message))
}
@ExceptionHandler(UniqueAttributeAlreadyExistException::class)
fun handleUniqueAttributeAlreadyExistException(e: UniqueAttributeAlreadyExistException): ResponseEntity<ErrorDTO>
{
return ResponseEntity
.status(HttpStatus.CONFLICT)
.body(ErrorDTO(e.message))
}
}
이녀석은 모든 에러 메시지를 총괄하는 사령탑이다.
처음부터 dto를 넣었어야 했는데, 나중에 넣다보니 꼬이고 오류도 나고, 거기에 title를 넣어야 하는데 빼먹는다던가 하는ㄹ 실수가 계속 발생하고 있다.
다음부턴 꼭 서비스, 서비스임플, 컨트롤러, 리포지터리, dto를 다넣어야 할거같다.