brunch

You can make anything
by writing

C.S.Lewis

by 세라s Pick Mar 17. 2022

API 개념 이해와 카카오 로그인 API 사용하기

[코드스테이츠 PMB 10기]  오픈 API 탐색하기 


API 이해하기


API를 설명하기 앞서 우리가 이용하는 서비스 중 하나를 예시로 생각해 보자.

카카오톡의 경우 회원가입, 로그인시켜줘, 친구 삭제해 줘, 동영상, 사진 보내줘 등등 사용자는 많은 기능을 요구한다. 이때 사용자의 요구사항을 처리하는 게 서버 컴퓨터이다.


배달을 시킬 때 '집 주소를 적고 문 앞에 놓아주세요~'라는 요청을 바로 이해하고 행동하는 사람 친구와 다르게, 컴퓨터 언어를 쓰는 서버 친구에게는 요청사항 별로 구분할 수 있는 정해진 경로를 알려 주어야 한다.

이때 컴퓨터가 이해할 수 있도록 만든 사인, 사용자의 요청을 컴퓨터가 이해할 수 있게 만든 체계 또는 규칙을 Application Programming Interface의 약자, API라고 한다.


간단한 예시를 이해했다면 더 자세하게 API에 대해 알아보자.


아래의 그림과 같이 데스크톱, 스마트폰 등 클라이언트 컴퓨터에서 사용자가 서버에 요청을 보내면 서버 컴퓨터에서는 각 요청에 맞는 서버 주소로 해당 요청을 받고, 요청된 기능을 수행한 후 다시 클라이언트에 응답을 해준다. 반대로 이야기하면 서버가 클라이언트에 성공적인 응답을 하기 위해서 요청 사항을 받는 주소지를 정확히 정해놔야 기능을 수행하고, 원하는 답변을 줄 수 있다는 것이다.


요청받는 주소지는 '서버 주소/ 요청 도착지'라고 생각하면 된다. 아래 그림을 참고하면 클라이언트가 '로그인해 줘'라는 요청을 보낸 경우


'서버 주소/A'가 되고, '이미지 보여줘'라고 보내면 '서버 주소/C'가 되는 것이다.

클라이언트와 서버의 API 흐름 (자체 제작)


이렇게 클라이언트와 서버가 요청을 주고받는 과정은 결국 데이터를 주고받는 기능이다.

클라이언트가 요청을 하면 서버가 응답할 때 데이터도 같이 보내주어야 하는데 이때 클라이언트가 할 수 있는 요청은 4가지이다.

Create 데이터를 생성, 등록 / Read 데이터를 조회, 불러오기 / Update 데이터 수정하기 / Delete 데이터 삭제 각 단어의 앞 글자를 따서 'CRUD'라고 부른다. 클라이언트는 CRUD 4가지의 요청을 하고 각각의 명령에 맞는 서버 주소를 불러온다. 하지만 각 화면에서 필요한 데이터를 필요로 하는 기능을 이런 식으로 하나씩 구성하다 보면 주소가 셀 수 없이 많아질 것이다. 또 모든 주소를 정확히 관리하기란 거의 불가능하고, 개발자마다 모두 요청하는 규칙을 다르게 한다면 복잡한 문제가 생기기 마련이다.


이 문제를 해결하고자 만들어진 체계적인 API 규칙을 'Restful API'라고 한다.


Restful API는 CRUD를 각각 서버 주소로 호출하는 것이 아닌 하나의 기능이 담긴 서버 주소로 관리하는 체계를 말한다.

예를 들어 사용자가 로그인해 줘라는 요청을 했다면 이전의 API는 '서버 주소/loginCreate' 이 있고, 회원 정보 수정은 '서버 주소/loginUpdate' 이런 식으로 따로 존재한다. 하지만 Restful API는 '서버 주소/login'이라는 하나의 주소로 관리하고, 어떤 요청을 할 때 요청 내용을 알 수 있는 명령어 하나만 붙이면 작업 수행이 가능하다그 명령어는 다음과 같다.

이렇게 클라이언트가 요청을 보내면 서버는 어떤 응답을 줄까? 대부분 사용자 화면에서는 서버에서 정확한 데이터 값이 전달된 것을 볼 수 있겠지만 그렇지 않은 경우도 있다. 인터넷을 사용하다 404 에러, 500 에러 등 알 수 없는 숫자로 표시된 페이지를 본 적이 있을 것이다.


이건 서버가 클라이언트에게 준 응답이라고 할 수 있다. 여기서도 효율적인 의사소통을 위해 요청이 잘 수행된 경우 200번대 코드, 클라이언트에 문제가 있는 경우 400번대 코드, 서버에 문제가 있는 경우는 500번대 코드로 표현하기로 개발자들이 약속했고 코드로 응답해 준다.


로그인 정보 불러오기 Restful API 흐름 (자체 제작)

클라이언트가 API 요청의 성공, 실패를 알 수 있는 서버의 응답을 'Http 상태 코드'라고 한다.

http는 HyperText Transfer Protocol의 약자로 웹 환경에서 정보를 주고받기 위한 통신 규약, 약속(=프로토콜)을 의미한다. http 상태 코드는 100번대부터 500번대 까지 존재한다. 아래의 페이지에서 더 자세하게 http 상태 코드 별 의미와 기능을 알 수 있다.


HTTP 상태 코드 참고



OPEN API 이해하기 및 종류


위에서 말한 API 기능에 더해서 우리에게 API가 필요한 이유가 있다.

만약 자사 서비스에 당장 어떤 기능이 필요한데 그 기능을 개발하기에 자원이 너무 많이 든다면 Open API 혹은 외부 API를 활용해 문제를 해결할 수 있다.


Open API는 단어 그대로 누구나 사용할 수 있도록 만들어진 API이다. Open API의 동작 구조는 일반 API와 같지만 한 가지 다른 점은 한 소프트웨어에서 다른 소프트웨어 기능에 접근해 사용한다는 것이다. 내 소프트 웨어 개발에 필요한 기능을 다른 소프트웨어의 Open API를 사용해서 내 소프트웨어의 일부분처럼 사용한다. 이때 api를 제공하는 소프트웨어를 SDK (Software Development Kit)라고 부른다.


Open API는 정말 다양한 곳에서 제공되고 있다.

먼저 공공데이터 포털은 공공기관이 여러 카테고리 안에서 축적한 데이터 베이스로 데이터 사용 허가를 받은 후 API 형태로 사용할 수 있다.


또 대표적으로 우리가 자주 사용하는 서비스인 네이버, 카카오, 구글에서 로그인, 검색, 지도 등 다양한 기능의 API를 제공하고 있다.

오픈 API 제공 사이트

공공 데이터 센터

Kakao Developers 센터

Naver Developers 센터

Google Developers 센터




카카오 로그인 API


카카오톡, 페이스북, 인스타그램 등의 ID로 간편 로그인이 가능해지면서, 번거로운 회원가입 절차가 없어 사용자의 편의성을 높이고 이탈률을 낮출 수 있는 이점을 가지는 중요한 기능이 되었다. 소셜 로그인 기능은 해당 소셜 미디어 서비스 혹은 포털에서 제공하는 API를 사용하는데 어떻게 사용하고, 어떤 API 입출력 과정을 거치는지 살펴보자.


소셜 로그인 API 종류 중 카카오 로그인 API를 사용하려면 어떤 과정을 거치는지 알아보았다.


카카오 로그인 REST API 입출력 과정

카카오 로그인 API를 사용하기 위해서는 먼저 https://developers.kakao.com/에 회원 가입 후 애플리케이션 추가하고, 앱 설정 플랫폼에서 로그인 기능을 넣을 서비스의 도메인 주소를 입력한다. 그리고 몇 개의 간단한 절차를 끝내고 인가 코드를 받고 아래 그림과 같은 과정을 거치게 된다. 소셜 로그인은 API를 제공하는 플랫폼에 인증 과정을 거쳐야 하기 때문에 과정이 조금 더 추가된다.


그리고 로그인뿐만 아니라 로그아웃 API도 반드시 함께 사용되어야 하며 추가적으로 파생되는 기능들을 개발해야 한다.

카카오 로그인 REST API 입출력  과정 (자체 제작)




PM의 시선


일반 회원가입과 소셜 로그인의 이용률을 분석해 봤을 때 소셜 로그인 사용자가 2배 이상 많다고 한다. 소셜 로그인은 회원가입에 드는 시간을 절약할 수 있고, 일일이 회원 가입 폼을 작성하지 않고 한 번의 터치, 클릭 만으로 로그인이 가능한 간편함을 제공한다. 하지만 자사 서비스에 소셜 로그인 기능을 개발하기 전에 장점만 볼 것이 아닌 단점을 인지하고 어떻게 보완할 것인지 대책을 세우는 것도 중요하다.


소셜 로그인을 할 수 있는 플랫폼이 1개가 아닌 여러 개 일 때 사용자는 어떤 플랫폼에서 로그인을 이용했는지 기억을 못 할 가능성이 높다. 그래서 앱을 재설치하거나 상당한 기간을 두고 재방문을 했을 때 로그인 수단을 잊어버리고 새로운 소셜 서비스를 이용해 하나의 서비스에서 여러 계정을 두는 일이 발생할 수 있다. 


또 서비스 내에서 온라인 강의나 지속적으로 이용할 수 있는 상품을 결제했을 때 구매 이력과 이용할 수 있는 상품, 남은 기간 등의 정보가 다른 소셜 계정으로 전환될 수 있는지도 체크해야 한다.


사용자가 무심코 로그인을 하기 전에 해당 문제점에 관련한 서비스 정책을 언급하거나, 이전에 했던 소셜 로그인을 알려주는 표시를 해주는 등 소셜 로그인에서 생기는 문제점의 해결방안을 고민하고 로그인 서비스를 기획할 필요가 있다.





매거진의 이전글 애자일 속 이해관계자들과 소통하기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari