API, RESTful API

강지원·2021년 11월 21일
0

카카오톡 API를 사용해 로그인 기능을 구현하는 목표가 생겼다.
그에 따라 RESTful API를 접했고, 기본이 되는 API라는 것에
대해 이해가 필요했다.

1. API

서로 다른 무언가가 만나 작동하거나 정보를 교환하는 장소.

프로그램에서 사용할수 있도록 운영체제나 프로그래밍 언어가
제공하는 기능을 제어할 수 있게 만드는 interface

  • interface
    정보를 교환하기 위한 수단 또는 방법

API는 왜 쓰는걸까?

나는 이 특징에 대해 2가지로 정리했다.

  1. 개발에 쏟는 시간과 비용 절감
  2. 쉬운 유지 관리

API의 유형

Private API
내부 구성원만 이용 가능, API 통제 권한이 기업에 있다

Partner API
특정 비즈니스 파트너와 공유 가능, API의 품질 저하 우려 없이 부가 수익 창출이 가능

Public (=Open API)
모두 사용 가능한 API로, 이를 바탕으로 누구나 혁신적인 애플리케이션을 개발할 수 있다.

여기서 내가 사용하려 하는 API의 유형은
public으로, 카카오톡의 API가 이에 해당한다.

REST API

REST(REpresentational State Transfer)

= 웹에 존재하는 모든 자원(resorce, ex. 이미지, 동영상, 데이터)에
고유한 URI를 부여하여 자원에 대한 주소를 지정하는 방법론, 또는 규칙.
가장 대중적으로 사용된다.

이게 왜 필요한거야?

주소만 보고도 어떤 작업이 이루어지는지 쉽게 파악 가능

각 요청이 어떤 동작이나 정보를 위한 것인지를
그 요청의 모습 자체로 추론이 가능하기 때문이다.

REST 규칙에 어긋나는 url 예시

  1. 마지막에 '/'를 넣지 말자

  2. underbar 대신 dash를, 대문자보단 소문자를 사용하자

  3. 행위(=동사)는 예외적인 상황을 제외하곤 주소에 포함시키지 말자

  4. 함수처럼, 컨트롤 리소스를 나타내는 URL은 동작을 포함하는 이름을 짓는다

URI

자원을 구조와 함께 나타내는 구분자

이해가 정 안된다면
주소 뒤에 붙는 단어나 번호 등이라고 일단은 알아두자

예시)

서버에 정보를 보내달라는 요청을 할 때,
주소에 team이 붙었다면 team의 data를 받아오는 것이라고
유추가 가능하다.

추가적으로 뒤에 번호가 붙는다면(= index, id)
team 데이터 중 해당하는 id나 index를 지닌 team의 데이터와 연관이 있구나 라고 유추가 가능하다.

= id 값이 3인 팀의 데이터를 가져오겠다는 뜻으로 해석이 가능하다는 것이다.

domain 뒤에 붙는 uri에 ?를 붙여줘 조건에 맞는 데이터를
가져오는 것도 가능하다

  • http://(domain)/team/3/teammate?name=kang
    = id값이 3인 팀에 들어있는 데이터 중 teammate가 있고,
    teammate 데이터의 name이라는 데이터에서 kang이라는
    데이터를 다루겠구나 라고 유추가 가능하다.

CRUD와 HTTP

= domain / uri 를 이용해 단순히 정보를 조회하는 것 뿐 아니라
정보의 추가, 삭제, 수정 등의 작업도 필요하다

서버에 데이터를 전송하기 위해선 HTTP에서 정한 규칙에 따라야 한다.
이 HTTP에서도 종류가 있는데 익숙한 GET, POST 이외에도
DELETE, PUT, PATCH 가 있다.

여기서 POST, PUT, PATCH에는 body라는 추가적인 데이터 전달 공간이
존재한다.
그렇기 때문에 GET,DELETE 보다 더 많은 데이터를 전달할 수 있다.
이름만 보면 각자 주어진 역할이 있어보이지만 사실 사용 방식에
제한이 있진 않다.

(POST를 사용해서 데이터를 읽고 쓰고, 지우고 수정하는 것이 가능하다)

하지만 개발자의 목적을 명확히 드러내기 위해 RESTful하게 작성할 필요가 있기에 목적에 맞게 사용해야 한다.

  1. GET

    데이터를 조회하는 데 사용

ex) https://(domain)/team/1/teamMate

목적이 1team teamMate의 정보를 조회라는 것을 알 수 있다.

  1. POST

    데이터를 추가하는 데 사용

ex) https://(domain)/team/1/teamMate

1 team의 teamMate의 정보를 body에 넣어 데이터 전달을 요청
teamMate의 idx는 정보가 추가되며 생성되기 때문에 uri에 idx를
명시해주지 않아도 된다.

  1. PUT, PATCH

    데이터의 변경을 알리는 데 사용

ex) https://(domain)/team/1/teamMate/4

1팀의 teamMate중 4번의 데이터가 변경되어 변경한 데이터를
보내겠다는 요청을 해야한다. 기존 idx에 데이터가 추가되는 것이 아닌
새로운 idx에 데이터가 추가되기 때문에, 변화하는 데이터의 idx를 uri에
작성해주고, body에 변경되는 데이터를 넣어 전달한다.

PUT, PATCH의 차이

PUT은 해당 데이터 전체에 교체가 필요할 때,
PATCH는 해당 데이터의 한 부분에만 교체가 필요할 때 사용한다.

  1. DELETE

데이터 삭제가 필요할 때 사용.

ex) https://(domain)/team/1/teamMate/4

지울 데이터의 uri에도 idx를 명시해줘야 한다.

결론

REST API란 HTTP 요청을 보낼 때 사용하고자 하는 메소드를
넣어 의도를 전달하는 방식이라고 볼 수 있다.

Reference
얄팍한 코딩사전
가비아 라이브러리

profile
'Why' better than 'Yes'

0개의 댓글

관련 채용 정보