[Daily 탐구 과제] 코드스테이츠 PMB 17기 W7D3 #API #RESTful API

sosohan_challenges·2023년 3월 23일
0
post-thumbnail

PM은 개발팀과의 소통도 매우 중요하다.

  • 실제 개발팀이 제품을 개발하는 절차는 생각보다 훨씬 복잡하게 구성되어 있다.

요구사항 정의 👉 설계 👉 로컬 개발, 디버깅 👉 코드 업로드 👉 코드 리뷰 👉 테스트 배포 👉 테스트 👉 프로덕션 배포

  • 이와 같이 제품 개발 과정은 요구사항을 정의하고 이를 바탕으로 기획을 설계하며,
    기획이 완료되면 개발자들이 개발을 시작하고, 개발이 완료된 코드는 먼저 개발자 스스로가 디버깅한다.개발과 디버깅이 완료된 코드는 개발 서버에 올려 코드 리뷰를 진행하는 과정을 거친다.

  • 물론 회사마다 개발 과정은 다를 수 있지만, PM은 성공적인 제품을 만들기 위해서 개발팀이 실제 제품을 만드는 전 단계인 요구사항 정의부터 최종 단계인 프로덕션 배포까지 전 과정에 관여하게 된다.

  • 이러한 이유로 인해 PM에게 개발 지식은 필수이다.

  • 오늘 학습을 진행하며 API의 구조가 곧 제품의 정보 교환의 구조를 의미하는 만큼, 제품 기능을 이해하고 관리하는 목적에서 자사 제품의 API를 파악하고 분석할 수준의 능력을 갖추는 것이 중요하다는 것을 알 수 있었다.

API란?

Application Programming Interface의 줄임말로 '애플리케이션'을 ‘프로그래밍’하는 데 필요한 ‘인터페이스’이다. 인터페이스란, 상호 정보 소통을 돕기 위해 경계에 존재하는 시스템을 의미한다.

우리가 창구나 ATM을 통해서 상호 정보를 소통하듯이 애플리케이션을 실행하여 뭔가 기능을 수행할 때도 서버와 클라이언트 간에도 데이터를 주고받는 일이 발생한다. API는 이를 어떻게 할지 정의 한 것으로 이해할 수 있다.
좀 더 자세히 알고 싶다면? 코딩애플-API 설명 유튜브로 이동

Open API를 통해 실제 API가 동작하기 위한 세부 구조와 기능을 파악해보려 한다.

대표적인 Open API 사이트

드림코딩 - API 개념정리 및 포폴에 유용한 Open API 소개

탐색해 본 Open API 중 카카오 Open API에서 제공하는 기능과 구조를 살펴보려 한다.

카카오 API는 대부분의 기능을 REST API로 제공한다.

🤔REST API란?

  • REST의 개념
    - HTTP URI를 통해 자원을 명시하고, HTTP METHOD(POST;생성, GET;조회, PUT;수정, DELETE;삭제)를 통해 해당 자원에 대한 CRUD(Create, Read, Update, Delete) Operation을 적용하는 것을 의미함.

간단히 말해 "REST기반으로 서비스 API를 구현한 것을 REST API라고 한다"

  • 카카오톡 공유나 서비스 UI와 관련 있는 플러그인 성격의 일부 기능을 제외하고 모든 기능을 서비스 서버에서 REST API로 구현할 수 있다.
    또한 카카오 SDK가 지원하지 않는 카카오 API는 REST API를 통해 사용 가능합니다.
    • 예를 들면 다음과 같은 환경에서 REST API를 사용할 수 있다.
      • 모바일/PC 웹 환경
      • iOS, Android 등 모바일 환경
      • Java, Ruby, Python 등 다양한 환경의 웹 서버

카카오톡 메시지 API를 살펴보려 한다.

  • 메시지 API는 사용자가 카카오톡 친구에게 카카오톡 메시지를 보내는 기능을 제공한다.
  • 메시지를 보내는 방법은 크게 두 가지로, 카카오톡 공유 API를 사용하는 방법과 카카오톡 메시지 API를 사용하는 방법이 있다.
  • 두 API의 차이점

이 중 카카오톡 공유 API를 살펴보면,

  • 공유 버튼 클릭으로 카카오톡 메세지로 공유 메세지 전송 화면

카카오톡 공유 API는 카카오톡 앱으로 이동해 메세지를 전송하며, 카카오가 제공하는 카카오톡 친구 또는 대화 목록 페이지를 띄워 사용자가 메시지를 보낼 수 있도록 한다.
따라서 서비스가 카카오톡 친구 정보를 출력하는 페이지를 직접 만들 필요가 없고, 모든 카카오톡 친구가 목록에 포함된다.
카카오톡 공유 API는 웹 페이지 소스코드에 공유할 내용을 정의하는 등 상대적으로 간단하게 기능을 구현할 수 있다.

카카오톡 공유 API는 서비스 클라이언트에서 카카오톡 앱을 실행시켜 카카오톡 메시지를 보내는 반면, 카카오톡 메시지 API는 카카오톡 앱을 실행시키지 않고 서비스 클라이언트나 서버를 통해 카카오톡 친구에게 메시지를 보낼 수 있도록 한다. 대신, 두 가지 API 모두 카카오톡 메시지를 전송하므로 사용자 카카오계정에 연결된 카카오톡이 없는 상태, 즉 카카오톡 미사용자라면 메시지 보내기 요청 시 에러가 발생한다.

카카오톡 메시지 API

카카오톡 메시지 API는 친구 목록 가져오기 API를 통해 받은 친구 정보 중 지정한 친구에게 메시지를 보내는 기능을 제공한다. 카카오톡 친구 정보를 데이터로 제공하지만 카카오톡 친구 목록 페이지를 띄워주지 않는다. 따라서 서비스는 사용자의 카카오톡 친구 정보를 받아 처리하는 기능과 친구 목록을 직접 만들어야 한다. 또한 친구 목록 가져오기 API와 카카오톡 메시지 API는 각각 사용 권한 신청이 필요하다.

기본 템플릿으로 메시지 보내기 - 카카오톡 메시지:REST API 살펴보기

카카오톡 공유 API가 제공하는 기능 및 가이드를 더 보고 싶으시다면 이동

  1. 메시지 API는 카카오톡 공유
  2. 메시지 종류 및 구성 방법은 기본 템플릿으로 메시지 보내기
  3. 호출 방법은 공유하기 버튼 사용하기

✉️ 기본 템플릿으로 메시지 보내기

기본 템플릿으로 메시지 보내기에 대해 더 자세히 알고 싶으시다면 이동

사용하려는 기본 템플릿에 따라 메시지를 JSON 형식으로 구성하여 보내는 기능입니다. 템플릿 종류에 따라 메시지 구성 요소가 다르므로, 기본 메시지 템플릿 구성 요소 및 예제를 참고해 메시지를 구성합니다.

액세스 토큰을 헤더에 담아 POST로 요청합니다. JSON 형식으로 구성한 기본 메시지 템플릿을 template_object 파라미터로 전달해야 합니다.

친구에게 메시지 보내기 요청 시에는 피커 또는 친구 목록 가져오기 API의 응답으로 받은 uuid를 receiver_uuids 파라미터에 전달해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

모든 친구에게 메시지 보내기 성공 시, 메시지 보내기에 성공한 사용자 uuid 목록인 successful_receiver_uuids 배열을 받습니다. 일부 사용자에게만 메시지가 성공적으로 보내진 경우, successful_receiver_uuids와 함께 메시지 보내기에 실패한 사용자 목록과 실패 원인을 담은 failure_info 배열을 받습니다.

메시지 템플릿 - 텍스트 메시지

"object_type": "text"

메시지 템플릿에 대해 더 보고 싶으시다면 이동

  • 기본 템플릿으로 제공되는 텍스트 템플릿은 텍스트 영역과 하나의 기본 버튼을 가지며, 버튼을 추가할 수 있습니다. 구성 요소는 text Object에서 확인할 수 있다.
    🅐 텍스트: 최대 200자 표시
    🅑 버튼: 최대 2개 표시, 버튼명 8자 이하 권장

나에게 보내기

  • 기본정보
  POST /v2/api/talk/memo/default/send HTTP/1.1
  Host: kapi.kakao.com
  Authorization: Bearer ${ACCESS_TOKEN}

  • "object_type": "text" 텍스트로 보내기 예제

    • Request(요청)
          curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/default/send" \
          -H "Content-Type: application/x-www-form-urlencoded" \
          -H "Authorization: Bearer ${ACCESS_TOKEN}" \
          --data-urlencode 'template_object={
              "object_type": "text",
              "text": "나에게 보내기 텍스트 영역입니다. 최대 200자 표시 가능합니다.",
              "link": {
                  "web_url": "https://developers.kakao.com",
                  "mobile_web_url": "https://developers.kakao.com"
              },
              "button_title": "바로 확인"
          }'
      • text:는 보낼 내용을
      • link:는 자세히 보기를 눌렀을 때 이동할 Url을 입력하면 된다.
    • Response(응답); 요청에 대한 응답이 온다.
      HTTP/1.1 200 OK
      {
        "result_code":0
      }
  • 위의 예제를 카카오톡으로 나에게 보내기를 하면 아래와 같이 공유된다.

친구에게 보내기

  • 기본정보
  POST /v1/api/talk/friends/message/default/send HTTP/1.1
  Host: kapi.kakao.com
  Authorization: Bearer ${ACCESS_TOKEN}

  • Request(요청) 예제
    curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/default/send" \
        -H "Content-Type: application/x-www-form-urlencoded" \
        -H "Authorization: Bearer ${ACCESS_TOKEN}" \
        --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' \
        --data-urlencode 'template_object={
            "object_type": "text",
            "text": "텍스트 영역입니다. 최대 200자 표시 가능합니다.",
            "link": {
                "web_url": "https://developers.kakao.com",
                "mobile_web_url": "https://developers.kakao.com"
            },
            "button_title": "바로 확인"
        }'
  • Response: 친구에게 보내기 성공
    HTTP/1.1 200 OK
    {
      "successful_receiver_uuids": ["abcdefg0001","abcdefg0002","abcdefg0003"]
    }
  • Response: 일부 친구에게만 전송 성공
	HTTP/1.1 200 OK
  {
    "successful_receiver_uuids": ["abcdefg0001","abcdefg0002"],
    "failure_info":[{
        "code": -532,
        "msg": "daily message limit per sender has been exceeded.",
        "receiver_uuids": ["abcdefg0003"]
    }]
  }
profile
꾸준하게 잔디심는 정원

0개의 댓글