카테고리 없음

Restful 코스

서버관리자 페페 2024. 4. 26. 17:12

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 상속

 

Entity어노테이션은 Jpa-jakarta // Repository는 springframework

 

 

-

 

5. 서비스

RESTFUL API에서는 인터페이스로 연결해 서비스 작성

인터페이스 내 메소드 모두 구현해야됨(abstract와 차이)

 

 

복수형 주의

Long 대문자 주의

 

-

 

6. 컨트롤러

prefix 넣을때 끝에도 슬래쉬 붙여주기

 

엔드포인트에 따라 작성 / 삭제 후 id는 반환하지 않는 void로 작성

 

-

 

7. HTTPIE 테스트

처음에 APPLICATION 실행 먼저 해보기

DB는 무조건 있어야 한다

 

DB 넣고 나면 target 생성됨

 

실행 완료

 

-

 

참고 : https://memostack.tistory.com/176

 

MacOS에 Httpie 설치하기 (Homebrew 이용)

HTTPie는 기존 curl과 같이 HTTP 요청을 보낼때 사용하는 CLI 기반의 툴이다. 설치 방법 설치 방법은 공식 사이트에 가면 친절히 설명되어있다. httpie.io/ HTTPie – command-line HTTP client for the API era CLI HTTP t

memostack.tistory.com

 

 

경로에 끝에 slash 붙여야 함 주의할것

 

-

 

8. 404 글로벌 익셉션 처리

 

 

-

 

9. 400 에러 처리 -> 버저닝 하면서 할 것

 

질문 : 400은 어디서 일어나지? -> Course를 받는 POST / PUT에서

Entity에 validation 넣어주고 예외 처리 

 

-

 

10. 내부 테스트

Post 테스트

GET (id) x테스트

존재하지 않는 과정 조회 / 수정 / 삭제

 

Entity에 lombok 어노테이션 추가해주기

springframework 아닌 jayway해야 Parsing 가능

 

perfom post가 contentType, content까지 끊고  andDo / andExpect 들어가야함 -> 괄호로 끊어주기

 

id는 int 아닌 Integer

json 직렬화 까먹지 말것

 

 

*

IDE 내부에도 터미널 있음...

 

 

********** updateCourse

테스트 업데이트=put만 안됨

 

생성은 잘 되는 것 확인

 

*컨트롤러와 서비스(서비스임플) 에 Return 값을 void로 해둬서 post까지는 반환ok, void로 해서 json반응값이 없었던 것

 

 

테스트 코드가 작동 안되는 경우가 잇고

원본 코드를 봐야할 때도 있다.

해결!

 

-

 

12. OPEN API 문서화

디펜던시 설치 후 작동 확인

 

컨트롤러에 @TAG / @Resonsestatus / @Operation작성할 것

 

메인 application에 명세 빈 정의

application.properties에서 @Value 읽어올 수 없음

 

롬복 어노테이션 아님에 주의

 

localhost:8080/swagger-ui.html에서 정상 작동 확인

json 형식으로도 가능