Axios 를 사용하다 보면, GET 형식에 params 를 사용할때가 종종 생긴다. 이는 단순한 형태로는 잘 동작하지만, 아래와 같이 중첩되기 시작하는 순간 제대로 stringify 처리를 하지 못한다. 이를 해결해주기 위해서는 params 에 직접 한땀한땀 적어서 넣어주어야 할까? 아니다, 역시나 해결책은 이미 준비돼있다. Axios 에는 paramsSerializer 라는 인터페이스를 열어주고 있다. 이곳에 내가 처리하고 싶은 방식으로 함수를 넘겨주면, 기본적으로 제공되는 serializer 대신 실행된다. 우리는 중첩된 오브젝트를 넣는게 목표이기 때문에, qs 라는 강력한 모듈을 사용해서 처리해줄 수 있다. 참고로 query-params 에서 배열, 오브젝트는 아래와 같은 컨벤션을 가지고 있다.
Axios 에는 interceptors 라는 기능이 있다. 이를 통해서 request / response 에 선행,후행 처리를 커스텀하게 할 수 있다. 그취만.. 타입 스크립트에서는 interceptor 를 통해서 한번 포맷팅을 변경했지만 client.get 의 타입은 그대로 response.data 형태로 남아있는걸 겪을 수 있다. https://github.com/axios/axios/issues/1510 이슈를 통해서 활발한 논의가 진행됐었고 https://github.com/axios/axios/pull/1605 를 통해서 커스텀한 타입을 추가할 수 있게 수정되었다. (뒤쪽 제네릭의 기본값을 AxiosResponse 로 감싼 형태로 처리하고, 해당 제네릭을 return 값으로 처리했다.) 흠.. 계속해서 사용하기에 적합한 방식은 아닌 것 같다는 생각이 들었다. typescript 는 타입선언을 여러가지 방법으로 지원하는데 이 중