728x90
스프링 기반 REST API 개발
3. HATEOAS와 Self-Decribtive Message 적용
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/spring-rest-api-study/tree/chap03-04_rest_docs_apply
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/spring_rest-api/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
4. 스프링 REST Docs 적용
REST Docs 자동 설정
테스트에 설정하면 target/generated-snippets
디렉토리를 생성하고 snippets 정보를 추가해줌
매번 테스트를 실행할때마다 snippets 들은 오버라이딩 되서 덮어씌워짐
@AutoConfigureRestDocs
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@AutoConfigureRestDocs
@Import(RestDocsConfiguration.class)
public class EventControllerTests {
RestDocMockMvc 커스터마이징
RestDocs 요청 응답 포멧팅 하기위해 커스터마이징이 필요
RestDocsMockMvcConfigurationCustomizer
구현한 빈 등록
@TestConfiguration
test
패키지 영역에 RestDocsConfiguration 클래스를 구현한다
@TestConfiguration
public class RestDocsConfiguration {
@Bean
public RestDocsMockMvcConfigurationCustomizer restDocsMockMvcConfigurationCustomizer() {
return new RestDocsMockMvcConfigurationCustomizer() {
@Override
public void customize(MockMvcRestDocumentationConfigurer configurer) {
configurer.operationPreprocessors()
.withRequestDefaults(prettyPrint()) //요청 본문 문서화
.withResponseDefaults(prettyPrint()); //응답 본문 문서화
}
};
}
}
테스트 코드에 @TestConfiguration
적용
@AutoConfigureRestCods
, @Import(RestDocsConfiguration.class)
어노테이션을 추가하고EventControllerTests.createEvent()
테스트 코드에 .andDo(document("create-event))
코드를 추가한다
...
import me.freelife.rest.common.RestDocsConfiguration;
import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs;
import org.springframework.context.annotation.Import;
...
@AutoConfigureRestDocs
@Import(RestDocsConfiguration.class)
public class EventControllerTests {
...
@Test
@TestDescription("정상적으로 이벤트를 생성하는 테스트")
public void createEvent() throws Exception {
mockMvc.perform(post("/api/events/")
.contentType(MediaType.APPLICATION_JSON_UTF8) //요청타입
.accept(MediaTypes.HAL_JSON) //받고싶은 타입
.content(objectMapper.writeValueAsString(event))) //event를 json을 String으로 맵핑
...
.andDo(document("create-event")) //문서 이름
테스트 할 것
API 문서 만들기
- 요청 본문 문서화
- 응답 본문 문서화
- 링크문서화
- profile 링크 추가
- 응답 헤더 문서화
728x90
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 기반 REST API 개발] 3-6. 스프링 REST Docs: 문서 빌드 (0) | 2020.03.25 |
---|---|
[스프링 기반 REST API 개발] 3-5. 스프링 REST Docs: 링크, (Req, Res) 필드와 헤더 문서화 (0) | 2020.03.24 |
[스프링 기반 REST API 개발] 3-3. 스프링 REST Docs 소개 (0) | 2020.03.22 |
[스프링 기반 REST API 개발] 3-2. 스프링 HATEOAS 적용 (0) | 2020.01.01 |
[스프링 기반 REST API 개발] 3-1. 스프링 HATEOAS 소개 (0) | 2019.12.28 |
댓글