과제 만들면서 수시로 테스트 해보기
쿼리 테스트
application.yml 에서 spring 하위에 설정을 추가하여 쿼리가 의도대로 잘 되고 있는지 확인할 수 있다.
(데이터베이스 연결은 application.yml이 아닌 config-환경변수를 통해 설정해서 연결정보 숨기기)
~흐름 익히기~
Use Case Diagram /API 작성 / ERD 작성
프로젝트 생성 - swagger dependency 설정 - 패키지 구조 설계 (우리는 domain기준으로 했다.) Web layer : dto, controller 작성 - Service layer 작성 :비즈니스 로직, 트랜잭션, 예외 - controller 와 연결 - controller 구현부 작성 - repository 작성
여러번 해보는 수밖에 없는 것 같다.
그리고 양방향 단방향 관계 설정같은 경우
step1에서는 필요하지 않아서 작성하지 않았는데
강의에서 따라할 때 아주아주아주 어려웠다. 어떤거는 fetch를 붙이고 mappedby 로는 누굴 표시해야하는지 등등
step2이후부터는 추가되는게 더 많아서 복잡해질 텐데 이 부분은 강의를 더 공부해야겠다.
테스트
1 올바르지 않은 Id 를 넣고 GET / PUT 할 때
정상
2 올바르지 않은/ 올바른 Id 를 넣고 DELETE 할 때
ModelNotFoundException 이 실행되지도 않고 삭제도 안 된다! 204 는 잘 뜬다!
=> controller 의 delete 구현을 안 했었다.....반성....
이 외에 목록 조회, 생성까지 다 정상적으로 작동된다.
다음 질문의 답만 생각해내면 되는데 쉽지 않다.
1. 수정, 삭제 API의 request 를 어떤 방식으로 사용하였나요? (param, query, body)
수정 api는 업데이트할 데이터를 requestbody에 담아서 데이터를 수정하고 저장했다.
2. RESTful 한 API를 설계하였나요? 어떤 부분이 그렇고 그렇지 않나요?
url의 마지막에 /를 포함하지 않았고 소문자를 사용했으며 method는 포함하지 않았다.
클라이언트의 다음 작업을 위한 응답은 아직 하지 못했고 level2까지 한 것 같다.
3. 적절한 관심사 분리를 적용하였나요? (Controller, Service, Repository)
Controller layer 에서 http상태코드와 body를 반환하고 있고
Service layer 에서 CRUD 기능 구현을,
Repository layer 에서 jparepository 를 상속받아 card Entity를 관리하고 있다.
4. API 명세서 작성 가이드라인을 검색하여 직접 작성한 API 명세서와 비교해보세요
명세서의 response 부분을 줄글이 아니라 반환 형태 그대로 넣는게 더 알아보기 좋은 것 같다.
내일 할 일
1 중간중간 필요에 따라 종속성을 추가하는데 적어도 지금 사용중인게 무엇인지는 알아야 할 것 같다 (혹시라도 잘못 설정했을 때 어떻게 찾나 생각해봤다.😫)
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("com.h2database:h2")
runtimeOnly("org.postgresql:postgresql")
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
implementation("org.springframework.boot:spring-boot-starter-web")
: Spring MVC를 사용한 RESTful 서비스를 개발하는데 사용
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
: data 클래스는 빈 생성자를 가질 수 없다/주생성자를 사용한 일반 클래스는 빈 생성자가 없다 => 이를 개선하기 위해 사용
jsonproperty 속성 이름이 응답과 다른 경우 추가??
kotlin에서 나오는 문제 같은데
https://proandroiddev.com/parsing-optional-values-with-jackson-and-kotlin-36f6f63868ef
implementation("org.jetbrains.kotlin:kotlin-reflect")
:
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0")
:
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
:
implementation("com.h2database:h2")
:
runtimeOnly("org.postgresql:postgresql")
:
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
:
testImplementation("org.springframework.boot:spring-boot-starter-test")
:
2 얘는 뭔가
fun main(args: Array<String>) { runApplication<ToDoStep1Application>(*args)}
3 step2 구상, 시작
'왕초보일지' 카테고리의 다른 글
231229 TIL | 스프링 부트 3 기본 지식 (2) | 2023.12.29 |
---|---|
231228 TIL | (0) | 2023.12.28 |
231226 | Entity 작성, Service layer 연결 (0) | 2023.12.26 |
231222 TIL | (1) | 2023.12.22 |
231221 TIL | (2) | 2023.12.21 |