Intern | What is an API wrapper ?

김민철·2021년 2월 20일
1

인턴

목록 보기
2/3
post-thumbnail

이번 프로젝트에서 API wrapper 를 구현해야 했습니다. 처음 들어본 단어라 생소했지만, 다른 API로 요청을 전송하는 중간다리 역할의 API 였습니다.

위 그림은 서비스 구조를 나타낸 것 입니다. (회사 이름과 url 일부는 가렸습니다)

API wrapper 의 역할

프론트에서 요청을 하면, 백엔드 API wrapper는 n회사 서버로 이 요청을 보냅니다. 여기서 n회사로 요청을 보낼 때, 두 회사가 미리 정해놓은 토큰을 헤더에 담아 보냅니다.
그러면 n회사 서버는 저희 회사에서 보낸걸 알고 응답을 해줍니다. n회사로부터 받은 응답을 프론트에 전달해주면 API wrapper 의 역할은 끝납니다.

WHY

그러면 왜 API wrapper 를 사용할까요 ?
API wrapper 를 사용하면, 토큰을 필요로 하는 외부 서버와 호출 할 수 있게 해줍니다. 프론트에서는 토큰이 노출될 수 있기에 토큰을 가지고 있지 않습니다. 그렇기 때문에 프론트가 백엔드를 호출하고, 백엔드가 토큰을 담아서 외부 서버와 호출한 뒤 응답을 받아야 합니다.
즉, 토큰이 필요하고 외부 서버와 통신이 필요할 때 API wrapper를 사용합니다.

구현한 API wrapper

(url의 일부는 가렸습니다)

requests 라이브러리를 이용하고, 헤더에 토큰을 담아 보내는 방식이 카카오 소셜로그인에서 사용한 방식과 똑같습니다. (참고. 카카오 소셜로그인 )

다른 프로젝트에서 구현한 카카오 소셜로그인

위 로직도 헤더에 토큰을 담아 카카오 서버로 보내는 API 입니다.

정리

똑같은 구조이지만,
API wrapper 는 N 회사의 api 를 중간에서 처리해주는 역할입니다. (프론트에서 토큰을 가지고 N 회사로 바로 요청하기가 위험이 있기 때문입니다.) 그렇기에 API wrapper 는 N회사의 API 를 대신하는 역할입니다.
하지만 카카오톡 소셜로그인에 사용한 제 코드는 카카오에서 정의한 API 를 호출하는 것입니다. 카카오톡 소셜로그인 API 를 대신하려는 것이 아닙니다. 즉, 이 경우엔 API wrapper 라고 부르지 않습니다.

0개의 댓글