1. 개설
동일하게 Spring initializr 사용
-
2. 엔드포인트 작성
엔드포인트 | 메서드 | 목적 |
/courses/ | GET | 모든 과정 반환 |
/courses/{id} | GET | id에 해당하는 과정 반환 |
/courses/category/{name} | GET | 특정 카테고리에 해당하는 과정 반환 |
/courses/ | POST | 새 과정 생성 |
/courses/{id} | PUT | 특정 ID에 해당하는 과정 수정 |
/courses/{id} | DELETE | 특정 ID에 해당하는 과정 삭제 |
/courses/ | DELETE | 모든 과정 삭제 |
-
3. 엔티티 설계
@ : Data -> 롬복
@Entity / @Table -> jpa 잊지말기
Restful에서는 Entity 카테고리 아닌 model 카테고리로 둔다
-
4. 리포지토리
JpaRepository 아닌 CrudRepository 상속
-
5. 서비스
RESTFUL API에서는 인터페이스로 연결해 서비스 작성
복수형 주의
-
6. 컨트롤러
-
7. HTTPIE 테스트
처음에 APPLICATION 실행 먼저 해보기
DB는 무조건 있어야 한다
DB 넣고 나면 target 생성됨
실행 완료
-
참고 : https://memostack.tistory.com/176
경로에 끝에 slash 붙여야 함 주의할것
-
8. 404 글로벌 익셉션 처리
-
9. 400 에러 처리 -> 버저닝 하면서 할 것
질문 : 400은 어디서 일어나지? -> Course를 받는 POST / PUT에서
Entity에 validation 넣어주고 예외 처리
-
10. 내부 테스트
Post 테스트
GET (id) x테스트
존재하지 않는 과정 조회 / 수정 / 삭제
springframework 아닌 jayway해야 Parsing 가능
perfom post가 contentType, content까지 끊고 andDo / andExpect 들어가야함 -> 괄호로 끊어주기
id는 int 아닌 Integer
*
********** updateCourse
테스트 업데이트=put만 안됨
생성은 잘 되는 것 확인
*컨트롤러와 서비스(서비스임플) 에 Return 값을 void로 해둬서 post까지는 반환ok, void로 해서 json반응값이 없었던 것
테스트 코드가 작동 안되는 경우가 잇고
원본 코드를 봐야할 때도 있다.
해결!
-
12. OPEN API 문서화
디펜던시 설치 후 작동 확인
컨트롤러에 @TAG / @Resonsestatus / @Operation작성할 것
메인 application에 명세 빈 정의
ㅈ
application.properties에서 @Value 읽어올 수 없음
localhost:8080/swagger-ui.html에서 정상 작동 확인
json 형식으로도 가능