본문으로 바로가기

[Spring] 스프링 기반 REST API 개발 - 2

category Spring 2021. 8. 3. 22:27

https://www.inflearn.com/course/spring_rest-api

 

스프링 기반 REST API 개발 - 인프런 | 강의

다양한 스프링 기술을 사용하여 Self-Descriptive Message와 HATEOAS(Hypermedia as the engine of application state)를 만족하는 REST API를 개발하는 강의입니다., 스프링 기반 REST API 개발 이 강좌에...

www.inflearn.com

 

ㅁ HATEOAS 와 Self-Describtive Message 적용

ㅇ 스프링 HATEOAS 소개 && 스프링 HATEOAS 적용

- 링크 만드는 기능 

 > Linkto , slash

- 리소스 만드는 기능 : 리소스 : 데이터 + 링크

- 링크 찾아주는 기능

 > HREF

 > REL 

 

-  ResourceSupport(deprecated) -> RepresentationModel 를 통해 link 생성하여  추가함

-  Resource(deprecated) -> EntityModel 

- @JsonUnwrapped 사용하여 응답값에 객체 혹은 field가 배열로 구성된걸 풀 수 있다.

- add(linkTo(EventController.class).slash(event.getId()).withSelfRel())

>  타입 세이프하고 안전하게 하기 위함

   

ㅇ 스프링 REST Docs 소개 & 적용 & 조각 생성

- REST API 문서의 조각을 생성하는데 유용한 기능을 제공해주는 Tool (라이브러리)

 > 빌드, 실행시 다양한 정보를 문서화 할 수 있다.

-자바 8, 스프링 5 부터 지원

- 스웨거 라는것도 있지만, 테스트 때 생성 문서가 바뀌지 않는 문제가 있음

- prettyprint로 RestDocsConfiguration 생성

- Test쪽에서 @Import로 호출하여 적용

- ResponseFields : 전체 필드에 대해 description 필요

   relaxedResponseFields : 전체 필드에 대해서는 필요없고 일부만 작성해도 됨

   >> 정확한 문서를 만들지 못함

- links의 description을 정의해줬는데도, responseField를 작성할때 links를 한번 더 테스트해야함

  ( hal ( hypertext application language)  포맷을 따르기 때문에 response에도 들어가게됨 )

 

ㅇ 스프링 REST Docs 문서 빌드

- asciidoctor 플러그인의 process-asciidoc을 실행하게 하여, asciidoc의 .adoc 파일을 템플릿으로 사용해서 html로 만들어줌

- maven-resources-plugin을 통해, copy-resource 진행

 > static/docs 밑으로 옮겨줌

- prepare-package  phase때 진행해야하며, index.html 생성 후, copy하도록 플러그인 순서 맞춰야함

 >> 빌드디렉토리 내에서 진행

 

ㅇ 테스트용 DB와 설정 분리하기 & API 인덱스 만들기

- application.properties가 TEST에도 있을 경우, TEST쪽이 운영쪽을 덮어 씌움

 > 테스트 쪽에 필요한 옵션만 넣고, 운영쪽에서 쓸 옵션은 그대로 넘어오게 하자

 > 아니면 @ActiveProfiles(value = "test") 를 설정하고, application-test.properties를 생성

- var는 자바 10에 추가되었고, 지역변수에 한해서 타입을 지정하지 않고 var로 쓸 수 있음

- 스프링 부트 2.3으로 올라가면서 Jackson 라이브러리가 더이상 Array부터 만드는걸 허용하지 않음

 >> https://www.inflearn.com/questions/72123