231227 | Todo Step1

2023. 12. 27. 21:21· 왕초보일지
목차
  1. 테스트

과제 만들면서 수시로 테스트 해보기 

 

 

쿼리 테스트

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 |  (2) 2023.12.22
231221 TIL |  (2) 2023.12.21
  1. 테스트
'왕초보일지' 카테고리의 다른 글
  • 231229 TIL | 스프링 부트 3 기본 지식
  • 231228 TIL |
  • 231226 | Entity 작성, Service layer 연결
  • 231222 TIL |
다시은
다시은
🔥
다시은
재은로그
다시은
전체
오늘
어제
  • 분류 전체보기 (127)
    • 코딩테스트 (40)
    • Language (2)
      • JAVA (2)
      • Kotlin (0)
      • TypeScript (0)
    • SQL (1)
    • 인프라 (1)
    • 왕초보일지 (77)
    • 회고 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프레드시트
  • SQL문법
  • googleapis
  • mysql
  • 문자열변환
  • Kotlin
  • sql

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
다시은
231227 | Todo Step1
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.