-
이벤트 생성 API 개발 -3백기선(인프런 강의)/스프링 기반 REST API 개발 2021. 1. 24. 17:23반응형
위 GIT주소에 개발 step 별로 commit 해두었다.
진행되는 과정은 아래와 같다.
1. 입력값들을 전달하면 JSON 응답으로 201이 나오는지 확인.
- Location 헤더에 생성된 이벤트를 조회할 수 있는 URI 담겨 있는지 확인.
- id는 자동생성된 값으로 나오는지 확인
2. 입력값으로 누가 id나 eventStatus, offline, free 이런 데이터까지 같이 주면?
- Bad_Request로 응답 vs 받기로 한 값 이외는 무시
3. 입력 데이터가 이상한 경우 Bad_Request로 응답
- 입력값이 이상한 경우 에러
- 비즈니스 로직으로 검사할 수 있는 에러
- 에러 응답 메시지에 에러에 대한 정보가 있어야 한다.
4. 비즈니스 로직 적용 됐는지 응답 메시지 확인
- offline과 free 값 확인
5. 응답에 HATEOA와 profile 관련 링크가 있는지 확인.
- self (view)
- update (만든 사람은 수정할 수 있으니까)
- events (목록으로 가는 링크)
6. API 문서 만들기
- 요청 문서화
- 응답 문서화
- 링크 문서화
- profile 링크 추가
6. API 문서 만들기
6-1. 스프링 REST Docs: 링크, (Req, Res) 필드와 헤더 문서화
요청 필드 문서화
- requestFields() + fieldWithPath()
- responseFields() + fieldWithPath()
- requestHeaders() + headerWithName()
- responseHedaers() + headerWithName()
- links() + linkWithRel()
Relaxed 접두어
- 장점: 문서 일부분만 테스트 할 수 있다.
- 단점: 정확한 문서를 생성하지 못한다
6-2. 스프링 REST Docs: 문서 빌드
스프링 REST Docs
- pom.xml에 메이븐 플러그인 설정
- https://docs.spring.io/spring-restdocs/docs/2.0.2.RELEASE/reference/html5/
<plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.7</version> <executions> <execution> <id>copy-resources</id> <phase>prepare-package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory> ${project.build.outputDirectory}/static/docs </outputDirectory> <resources> <resource> <directory> ${project.build.directory}/generated-docs </directory> </resource> </resources> </configuration> </execution> </executions> </plugin>
템플릿 파일 추가
- src/main/asciidoc/index.adoc
문서 생성하기
- mvn package
- test
- prepare-package :: process-asciidoc
- prepare-package :: copy-resources
문서 확인
- /docs/index.html
테스트
API 문서 만들기
- 요청 본문 문서화
- 응답 본문 문서화
- 링크 문서화
- self
- query-events
- update-event
- profile 링크 추가
- 요청 헤더 문서화
- 요청 필드 문서화
- 응답 헤더 문서화
- 응답 필드 문서화
반응형'백기선(인프런 강의) > 스프링 기반 REST API 개발' 카테고리의 다른 글
이벤트 조회 및 수정 REST API 개발 (0) 2021.01.27 REST API 보안 적용 (0) 2021.01.24 이벤트 생성 API 개발 -2 (0) 2021.01.23 스프링 HATEOAS (0) 2021.01.23 이벤트 생성 API 개발 - 1 (0) 2021.01.22