API(Application Programming Interface)

정다영·2023년 7월 16일
0

01. API(Application Programming Interface)

01.01 API의 정의

  • 소프트웨어/시스템이 다양한 방식(프로그래밍 가능한)으로 상호작용(데이터를 주고, 받고, 해석)하기 위해서 만든 인터페이스(접점)이다. 동시에, 상호작용을 위해서 지켜야 하는 규칙이다.
  • 클라이언트가 요청하고, 서버가 응답하는데 필요한, 요청과 응답의 형식에 대한 약속이다.

01.02 API 특징 (간단히)

  • API는 보통 서버 개발자가 정의한다.
  • API를 사용하고자 하는 쪽의 편의성을 고려하여, 클라이언트의 사용성, 의견 등을 반영해야한다.
  • API는 제공자와 사용자 사이의 의사소통이다.
  • 따라서 만드는 쪽도, 사용하는 쪽도 모두 기술과 사람을 이해해야 좋은 API를 만들 수 있고, API를 잘 사용할 수 있다.

01.03 API 활용 사례

  • 모바일 앱에서 고객이 쇼필을 하기 위해서는 상품 리스트를 받아와야 한다. 상품 리스트를 조건에 따라서 10개씩 가져오는 API가 필요하다.
  • 사내에서 주기적으로 협업을 하는데 해번 엑셀파일로 데이터를 주고 받으니까 일이 지연되고 파일관리의 어려움이 있다. 그때 그때 데이터를 볼 수 있으면 좋겠다. 이거 API로 만들어주세요. 제가 필요할 때마다 조회해서 쓸게요.
  • 고객사가 우리 광고시스템에 등록할 광고 이미지를 매번 이미지로 전달했다. 고객사가 1000개가 넘으니까 메일함 관리도 어렵고 실수도 잦아진다. 이 API 이용해서 광고 등록 요청해주세요.

01.04 API의 종류

01.04.01 REST(Representational State Transfer)

  • 자원을 이름으로 구분하고, 자원의 상태를 주고받는 방법의 API
  • HTTP 프로토콜을 기반으로 웹의 자원을 다양하게 활용할 수 있다.
  • 기본 규칙
    • HTTP URI(Uniform Resource Identifier)로 대상이 되는 자원(Resource)을 명시한다.
    • HTTP Method(POST, GET, PUT, DELETE, PATCH 등)로 동작을 명시한다.
    • Header와 Body로 구성되어있다.
      • Header는 key-value로 정적인 정보 전달, Body를 처리하기 전에 필요한 약속, 보안과 관련 정보 등이다.
      • Body에는 header에서 정의한 방식에 따라서 자유롭게 데이터를 담을 수 있다.
    • 자유도가 높다.
      • 다양한 데이터 포맷을 사용할 수 있다.
      • 캐시 등 평의나 성능을 위한 기늘을 사용할 수 있다.

01.04.02 SOAP(Simple Object Access Protocol)

  • SOAP는 그 자체로 프로토콜이다.
  • 메시지 전송 포맷, 기능, 보안 등을 표준으로 정했다.
  • 프로토콜 상 실행 로직(성공/실패/반복)이 정의되어 있기 때문에, 처음부터 끝까지 신뢰성을 제공한다.
  • 자유도가 낮다.
  • 메세지가 크다.

01.04.03 GraphQL

  • 비즈니스 도메인을 그래프 자료구조로 모델링하고 한 번의 요청으로 원하는 정보를 선택적으로 요청하고 전달할 수 있는 API이다.

  • 한 개의 Endpoint로 모든 자료와 구조를 표현할 수 있다. 용도나 자원별로 API나 View 등을 만들 필요가 없다.

  • 한 번의 요청으로 원하는 모든 데이터를 서버로부터 요청하여 가져올 수 있다.

    • 기존에 REST API 사용할 때 자주 발생하는 Overfetching(원하는 정보 이상으로 가져오는 것)이나 Underfetching(원하는 데이터를 위해 여러 요청을 보내는 것) 문제가 발생하지 않는다.
    • 기존 REST의 API나 리소스 단위로 캐시하던 방법의 적용이 어렵다.
    • 필터링, 보안 등 다양한 제약사항을 서버에서 구현하기가 어렵다.

01.04.04 OpenAPI

  • 누구나 활용할 수 있도록 공개된 API를 말한다.

  • 외부 소프트웨어 개발자가 빠르게 시스템을 통합할 수 있도록 하기 위해서 만든다.

    • API의 명세가 공개되어 있다.
    • 공개는 되어있지만, 일부 사용의 제약이 있을 수 있다.(ex) 요청수, 시산당 요청수 등)
    • 사용하는 사람이 많으므로, 설계와 신뢰성이 중요하다.
    • 예시
      • 공공데이터포털
      • 네이버지도 API
      • 유튜브 API

01.05 API 설계 예시

01.05.01 HTTP URL을 통해 요청/응답 명시

01.05.02 HTTP Method를 통해 동작 적용

  • Create
    : (회원가입 시) 지금 요청 보내는 계정을 데이터베이스에 새로 넣어줘
  • Read
    : (로그인 시) 올바른 계정인지 데이터베이스에 저장되어 있는 회원 가입 계정을 읽어줘
  • Update
    : (로그인 계정 변경할 때) 데이터베이스에 저장되어 있는 계정 비밀번호를 지금 요청 보내는 비밀번호로 변경해줘
  • Delete
    : (회원 탈퇴 시) 데이터베이스에 저장되어 있는 이 계정 삭제해줘

백엔드 API 설계 - 스웨거 사용 예시 이미지

profile
My_Spielraum

0개의 댓글