RestApi 만들기 - spring-rest-docs (5)
- SPRING START!/restAPI😢
- 2021. 2. 19. 23:25
자 드디어 rest-docs를 적용할때가 왔다.
원래
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
누가 봐도 헤더를 지워주는 것 같다.
아 헤더 지워준데매...
알고보니 지정된 헤더 이름과 동일한 모든 헤더가 요청 또는 응답에서 제거됩니다. 라고 합니다.ㅜㅜ
나중에 다시 해봐야지...
어? 다른것 도 있네
removeMatchingHeaders
이건뭐..
이건 이런식으로
configurer -> configurer.operationPreprocessors().withResponseDefaults(removeMatchingHeaders("[a-zA-Z]"))
.withRequestDefaults(removeMatchingHeaders("[a-zA-Z]"));
정규식을 넣을 수 있다.
이것도 당장은 쓰기는 힘들것 같구, 나중에 공부하고 사용해봐야 겠다.
이밖에도
Replacing Patterns 이랑 Modifying Request Parameters도 존재한다.
솔직히 맨 처음 빼고는 감흥이 없다.
아무튼
이게 기본으로 만들어주는 스냅핏이라고 한다.
'SPRING START! > restAPI😢' 카테고리의 다른 글
RestApi 만들기 - API인덱스 지점 만들기 (8) (0) | 2021.03.03 |
---|---|
RestApi 만들기 - 각종 문서 조각 생성하기(6) (0) | 2021.02.24 |
RestApi 만들기 - HATEOAS (5) (0) | 2021.02.16 |
RestApi 만들기 - badRequest (4) (0) | 2021.02.13 |
RestApi 만들기 - 입력값 제한하기 + 입력값 이외의 에러 발생 (3) (0) | 2021.02.09 |