ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 이벤트 생성 API 개발 -3
    백기선(인프런 강의)/스프링 기반 REST API 개발 2021. 1. 24. 17:23
    반응형

    공부중인 GIT 주소

     

    위 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

    <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

    package 더블 클릭

    문서 확인

    • /docs/index.html

     

    서버 실행 시킨 후 접속 경로

     

     

     

    테스트

    API 문서 만들기

    • 요청 본문 문서화
    • 응답 본문 문서화
    • 링크 문서화
      • self
      • query-events
      • update-event
      • profile 링크 추가
    • 요청 헤더 문서화
    • 요청 필드 문서화
    • 응답 헤더 문서화
    • 응답 필드 문서화

     

     

     

     

    반응형
Designed by Tistory.