RestApi 만들기 - spring-rest-docs (5)

반응형
반응형

자 드디어 rest-docs를 적용할때가 왔다.

 

Spring REST Docs

Document RESTful services by combining hand-written documentation with auto-generated snippets produced with Spring MVC Test.

docs.spring.io

원래

private MockMvc mockMvc;

@Autowired
private WebApplicationContext context;

@Before
public void setUp() {
	this.mockMvc = MockMvcBuilders.webAppContextSetup(this.context)
			.apply(documentationConfiguration(this.restDocumentation)) 
			.build();
}

이러한 작업을 진행해야 되지만,
스프링 부트에서는

@AutoConfigureRestDocs
class DeliveryTest {

이 어노테이션이면 위 코드를 생성해준다고 한다.

이제 만들려고 하는 테스트코스에

.andDo(document("create-events"))

이러한 내용을 넣어준다.
create-events는 식별자로 저기에는 아무거나 넣어도 상관없다.
그리고 실행하게 되면,

이러한 내용이 들어있다는 것을 확인할 수 있다.

내용을 보자.

여러글 중 curl-request 즉, curl 요청 정보를 확인 할 수 있다.
itemPrice가 null인게 좀 그렇지만.. 아무튼
근데 나는 최대한 짧게 해서 그리 보기 어렵지는 않지만 json이 길다고 생각해보자.

그러면 알아보기가 어렵다.
방법을 찾아야 된다.
다행히
spring-docs에는 json정보를 포맷팅하는 여러가지 프로시저들이 존재한다.

이것을 사용하기 위해서는 RestDocsMockMvcConfigurationCustomizer을 등록할 필요가 있다.
어차피 이건 테스트 코스에서만 사용할 예정이므로
테스트쪽에 패키지를 만들구 클래스를 만들었다.
그리구,

@TestConfiguration
public class RestDocsConfiguration {

 이제 이건 테스트용 Configuration라는 뜻이된다.

이제 만들어보자.
빈으로 등록하구

@Bean
public RestDocsMockMvcConfigurationCustomizer restDocsMockMvcConfigurationCustomizer() {
    
}
configurer.operationPreprocessors().withResponseDefaults().withRequestDefaults();

설정 -> 프로시저열람?ㅎ -> 기본 응답 세팅 -> 기본 요청 세팅
참고로 아무것도 없어도 컴파일에러는 발생하지 않는다.

이것을 봤을때, 프로시저는 하나만 입력할 필요가 없다는 것을 알 수 있다.
이제 공식 문서에서 하나씩 사용하면서 어떻게 변하는지 직접 눈으로 확인해보자.

그 전에 해야될것이있다.
사실 이것만 하면 되지 않는다.

@Import(RestDocsConfiguration.class)

이렇게 임포트를 시켜준다음...

configurer.operationPreprocessors().withResponseDefaults(prettyPrint()).withRequestDefaults(prettyPrint());

응답,요청 프로시저 => prettyprint일때

위 메시지가 확실히 예쁘게 나온다.

응답, 요청 프로시저 => Masking Links

뭐가 달라졌지...

사실 여기는 큰 의미는 없는 것 같다. 왜냐하면 주소가 없으니까
이건 모든 주소를 href을 강제함이 있다고 한다.

이게...

시크릿 모드인가...

이건 모르겠다.

응답, 요청 프로시저 => Removing Headers

누가 봐도 헤더를 지워주는 것 같다.

origin

아 헤더 지워준데매...

알고보니  지정된 헤더 이름과 동일한 모든 헤더가 요청 또는 응답에서 제거됩니다. 라고 합니다.ㅜㅜ

나중에 다시 해봐야지...

어? 다른것 도 있네

removeMatchingHeaders

이건뭐..

이건 이런식으로

configurer -> configurer.operationPreprocessors().withResponseDefaults(removeMatchingHeaders("[a-zA-Z]"))
        .withRequestDefaults(removeMatchingHeaders("[a-zA-Z]"));

정규식을 넣을 수 있다.
이것도 당장은 쓰기는 힘들것 같구, 나중에 공부하고 사용해봐야 겠다.

이밖에도 
Replacing Patterns 이랑 Modifying Request Parameters도 존재한다.

솔직히 맨 처음 빼고는 감흥이 없다.

아무튼

이게 기본으로 만들어주는 스냅핏이라고 한다.

 

반응형

댓글

Designed by JB FACTORY