[Day27 w7d3] 카카오 오픈 API_코드스테이츠 PMB 10기

2022. 3. 9. 20:49기획/[Daily] 코드스테이츠 PMB 10기

개발의 개 자도 몰랐던, 아직도 거의 모르는 사람이지만 7주차 개발세션에서 배우고 있는 정말 필수적이고 핵심적인 내용을 바탕으로 오늘은 API에 대해 좀 더 공부해보고자 한다.

 

그 중에서도 인터넷에 공개되어 있는 카카오의 오픈 API는 어떤 기능을 제공하고 있는지, 어떻게 이루어져 있는지 정리해보았다. (이번 과제에서는 우선적으로 카카오만 분석해 보지만, 이후에 시간을 투자하여 추가적으로 국내 대기업(네이버) → 해외 대기업 (구글, MS) 까지 공개된 서비스까지 탐색해 보면 좋을 듯 하다.) 

 


본격적으로 카카오의 오픈 API 를 분석하기에 앞서 API란 무엇일까 그 개념을 다시 한번 정리했다.

API (Application Programming Interface)

서버와 클라이언트 간에 정보를 주고 받을 때 어떻게 주고 받을 지 정해놓은 체계

 

API는 서버, 클라이언트와 같이 서로 다른 프로그램에서 요청과 응답을 주고 받을 수 있게 만든 체계로 일종의 대화 규칙이라고 볼 수 있다. 어떤 정보를 어디로 보낼 지 정의해주는 역할을 한다고 생각하면 조금은 쉽게 이해가 된다. 컴퓨터간 소통을 하는데 효과적이고 효율적일 수 있도록 도움을 주는 API는 주고받고자 하는 데이터들을 포함해야 한다. 

 

 

API는 데이터를 다룰 때 기준이 되는 요청을 크게 4가지로 구분지을 수 있고 이를 CRUD라고 한다. 

  • Create   만들기/올리기
  • Read     불러오기
  • Update  바꾸기 
  • Delete   지우기

이러한 행동을 어디로 보낼 지는 요청에 따라 다음과 같이 정해진 주소를 통해 정해진다.

  • 서버 컴퓨터주소1/create
  • 서버 컴퓨터주소2/read
  • 서버 컴퓨터주소3/update
  • 서버 컴퓨터주소4/delete

하지만 이렇게 CRUD 별로 주소를 구성하게 될 경우 너무 많은 주소가 생기고 관리가 힘들어진다. 이러한 문제를 해결하기 위해 좀 더 체계적인 API 관리의 필요성이 대두되었고, RESTful API가 나타나게 되었다. 

RESTful API (Representational State Transfer Application Programming Interface)

일정한 아키텍처의 제약조건을 준수하는 API. CRUD를 하나의 주소로 관리하고 메소드를 통해 요청의 형태를 파악할 수 있음.
  • Create   : POST 
  • Read     : GET
  • Update  : PUT(전체) / PATCH(일부)
  • Delete   : DELETE

 

위와 같은 메소드(빨간색 표시)는 세부적인 내용을 담을 수 있고 특정 기능에 필요한 데이터(변수, 파라미터)와 그에 따른 결과값을 알 수 있다. 보다 정확한 이해를 위해 카카오의 오픈 API를 분석해 보자. 

 

 

카카오 오픈 API 구조와 기능
  • 1에서 살펴 본 오픈 API 중 하나(이상) 를(을) 선정해서 제공하는 기능과 구조를 살펴보고, 간단하게 요약해 정리해 봅니다.
  • (선택) 기능 하나를 선정해 API의 역할, 입출력 구조를 정리해 봅니다.

 

많은 대기업들은 자사가 제공하고 있는 서비스의 다양한 기능을 많은 곳에서 활용할 수 있도록 하기 위해, 즉 서비스의 시장을 넓히기 위해 몇몇 소스들을 오픈하고 있다. 

 

카카오는 아래 이미지와 같이 정말 많은 서비스를 갖고 있으며 그 서비스 내에서 제공되는 기능들은 무수히 많을텐데, 그 중에서도 오늘은 카카오가 REST API를 사용하여 카카오스토리 서비 내 다양한 기능들을 어떻게 제공하고 있는 지 알아보았다. 

 

  •  POST 

내 스토리 쓰기(글, 사진, 링크) / 이미지 업로드하기

 

  •  GET 

사용자 확인하기 / 프로필 받기 / 내 스토리 가져오기(지정, 여러 개) / 웹페이지 스크랩하기

 

  •  DELETE 

내 스토리 삭제하기

--------

PUT(전체) / PATCH(일부)

제공하고 있는 기능 중에서 update 부분에 해당하는 API는 없었지만 스토리를 수정하거나 스킨 등과 같은 디자인을 수정하는 기능들이 이에 해당하지 않을까 싶다. 

 


 

사용자 확인하기 (GET)

 

*매개변수라는 뜻을 가진 '파라미터'는 IT에서는 소프트웨어나 시스템에 영향을 미치는 외부로부터 투입되는 데이터라는 의미를 가지고 있다.

 

특정 정보를 불러오는 특성을 가진 사용자 확인하기 기능은 CRUD 관점 중에서 R:read 이고 매소드로 GET이 사용된다. API 상에서 데이터를 보내는 사용자와 카카오스토리의 매칭 여부만 확인하면 되기 때문에 액서스 토큰 외에 다른 파라미터는 필요없다. 이에 대한 결과값은 카카오스토리의 사용여부 예, 아니오 2가지로 존재하므로 "True" or "False"로 응답된다.  


위에 제공된 response 샘플이미지에서 API를 보낸 컴퓨터의 사용자는 카카오스토리를 사용하는 유저임을 알 수 있다.(200, true) 

 


 

내 스토리 쓰기 (POST)

 

새로운 콘텐츠를 작성하는 특성을 가진 스토리 쓰기 기능은 CRUD 관점 중에서 C:creat 이고 매소드로 POST가 사용된다. 카카오스토리에서는 글(텍스트), 사진, 링크 같이 각기 다른 형식의 게시글을 작성할 수 있다. 따라서 특성에 따라 서로 다른 파라미터를 전달해야 한다. 사진과 링크 스토리를 작성할 때 각각 image_url_list와 link_info 파라미터가 추가됨을 확인할 수 있었다.

 

또한 스토리 쓰기는 앞의 사용자 확인하기와 달리 스토리 공개, 공유 등과 같은 추가 기능이 제공된다. 따라서 이에 대한 세부 설정을 요청할 수 있는 파라미터가 있다. 마지막으로 스토리 쓰기가 성공적으로 완료되면 200으로 응답이 된다.

 


위에 제공된 response 샘플이미지에서 API를 보낸 컴퓨터의 사용자는 카카오스토리를 글 작성을 성공적으로 마무리했다.(200, true)

Q. 콘텐트 타입으로는 텍스트, 사진, 링크 스토리인 지 확인이 어려운데 알 수 있는 방법은 무엇일까?