오늘도 돌아온 말하는 감자의 깔짝 개발 공부 시간.
API가 어쩌고, REST가 어쩌고, 한 귀로 들어왔다가 한 귀로 나가는 와중에 어떻게든 이해하려고 애 쓴 나 칭찬한다. 말하는 감자에게 딱 맞는 설명은 바로 비유입니다.
비전공자들을 위한 개발자 분들 너무... 소중한 존재.
정의를 살펴 보자면 API란 애플리케이션에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스. 다시 말해, 애플리케이션이 어떤 프로그램이 기존에 가지고 있던 기능을 가져 와서 사용할 수 있게 중간에서 매개체 역할을 하는 인터페이스라는 것이다.
하지만 이 정의 자체도 너무 어려우니까 위의 그림으로 보자. 결국 '점원'이 곧 'API'라는 것을 알 수 있다.
API는 손님(프로그램)이 주문할 수 있게 메뉴(명령 목록)를 정리하고,
주문(명령)을 받으면 요리사(응용프로그램)와 상호작용하여
요청된 메뉴(명령에 대한 값)를 전달하는 것이다.
그렇다면 REST API는 또 뭘까? REST란 자원을 이름, 즉 표현으로 구분해 해당 자원의 정보를 주고 받는 모든 것을 의미한다. 따라서 REST API란, REST의 특징을 기반으로 API를 구현한 것이라고 이해하면 된다.
REST API의 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능하다는 것이다.
API를 아무리 잘 설계한다 해도, 각자 필요한 방식에 맞게 다양하게 설계하면 유지보수에 어려움이 발생한다. 이 문제를 해결하기 위해 REST 원리를 준수하는 인터페이스를 만들어 사용하기로 한 건데, 이것이 바로 RESTful API이다.
즉, REST API를 제공하는 웹 서비스를 RESTful 하다고 말할 수 있다.
카카오톡 소셜 API는 서비스의 소셜 기능 구현을 위한 사용자의 카카오톡 프로필과 친구 저봉을 제공한다. 카카오톡 친구 정보를 토대로 카카오톡 메시지도 보낼 수 있다.
카카오톡 소셜 기능 중 '프로필 가져오기' API는 액세스 토큰을 헤더에 담아 GET으로 요청하고, 응답은 JSON 객체로 받는다. 이 떄, 사용자 카카오계정에 연결된 카카오톡이 없다면 에러 응답을 받는다.
'프로필 가져오기' 기능은 Request에 따른 값은 따로 없고, Response에 대한 값은 아래와 같다.
아래는 기본 Request에 따른 결과를 모든 경우의 수로 나타낸 URL이다. 사용자가 동의 항목에 전부 동의한 경우, 닉네임만 동의한 경우, 사용자가 프로필 사진만 동의한 경우, 사용자가 모든 필요한 동의 항목에 동의하지 않은 경우로 나뉜다.
사용자가 모든 필요한 동의 항목에 동의하지 않은 경우를 제외한 응답을 보면 모두 위의 Response 값을 나타낸 표의 요소들이 있는 것을 확인할 수 있다. 대충 어떤 느낌인지는 알 것 같지만... 그냥 그 뿐이랄까....
카카오톡 소셜 기능 중 '친구 목록 가져오기' API 또한 액세스 토큰을 헤더에 담아 GET으로 요청하고 응답은 JSON 객체로 받는다. 다른 점은 매개변수인 파라미터가 있다는 것이다. 매개변수에 대해 전문적인 지식은 없지만, 아래의 표로 봤을 때 결과값을 제한하거나 조작하는 변수임을 짐작할 수 있다.
파라미터 중 친구 정보를 정렬하는 기준은 order와 friend_order으로 설정하며, order의 asc 값을 사용하여 즐겨찾기 목록이나 닉네임 오름차순 등으로 정렬할 수 있다.
ex)
즐겨찾기: order = asc, friend_order = favorite
닉네임 오름차순: order = asc, friend_order = nickname
위에서 미루어 짐작한 것처럼 샘플 URL을 보면 limit, offset 등으로 결과값을 제한하고 있음을 알 수 있다. limit=3 이라는 파라미터로 3명에 대한 결과값만 나온 것을 확인할 수 있었다. 또, order=asc 를 통해 순차적인 페이지 전개가 이루우졌음을 알 수 있다.
#PM #프로덕트 매니저 #IT #기획 #UX #UI #CX
<참고자료>
REST란? REST API 와 RESTful API의 차이점 — 슬기로운 개발생활 (tistory.com)