[파고들기] API

ㅜㅜ·2022년 10월 1일
1

파고들기

목록 보기
2/2
post-thumbnail

간혹 수업을 듣다가 'API가 어쩌고...'라는 말이 스쳐지나가는데,
그때마다 이전에 읽었던 책 '비전공자를 위한 이해할 수 있는 IT지식'에서 API에 대한 내용을 봤던 것 같은데... 하며 그냥 넘어간 것이 아쉬워 작성해보는 파고들기 2번째 포스팅!

😮 API 개념

API는 'Application Programming Interface'(응용 프로그램 프로그래밍 인터페이스)의 줄임말이다.

구글에 API라고 검색해보니 가장 먼저 aws 사이트의 설명이 보인다.

' API는 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘입니다.' 출처

한 번에 이해할 수 있으면 좋겠지만 위의 내용만으로는 어떤 것인지 알지 쉽지 않았다.

그 아래의 설명을 보면

API에서 말하는 '애플리케이션'은 '고유한 기능을 가진 모든 소프트웨어'
'인터페이스'는 '두 애플리케이션(두 소프트웨어)간의 서비스 계약'

여기서 '계약'이라는 건 우리가 흔히 생각하는 개인 간의 계약, 기업 간의 계약이라기 보다는 두 소프트웨어 간의 '약속'이나 '체계'에 가까운데, 이 약속이나 체계는 두 소프트웨어가 서로 통신하는(요청과 응답하는) 방법을 정의하고 있다.

(API 문서에는 '개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보'가 들어있다.)

그래서 정리해보자면 API라는 것은
어떤 두 소프트웨어 간에 요청과 응답하는 방법을 정의/약속한 체계
라고 할 수 있겠다.





😵 API 작동


클라이언트 & 서버

API가 어떻게 작동하는지를 알기 위해서는 클라이언트와 서버에 대해 알아야 하는데, 위에서 이야기한 '두 소프트웨어 간의 통신'에서 각 소프트웨어는 요청이나 응답을 할 수 있는데, 요청을 하느냐 응답을 하느냐에 따라 가진 이름이 다르다.

-클라이언트 : 요청을 보내는 쪽 (달라!!!)
-서버 : 요청을 받고, 응답을 보내는 쪽 (줄게!!!)

ex: 클라이언트에서 사진 파일을 달라고 요청을 보냄 => 서버에서 사진 파일을 보내줌

클라이언트는 서버에 다양한 요청들을 보낸다.
(예시처럼 파일을 달라고 요청하는 것 외에도 로그인할 때 로그인을 처리해달라는 요청, 게시글을 삭제해달라는 요청 등)
그리고 서버는 각 요청들을 처리할 수 있는 기능들을 가지고 있다.

클라이언트가 보내는 요청들을 아래와 같이 크게 4가지 유형으로 나눌 수 있고, 이것을 'CRUD'라고 한다.

CRUD

  • Create : 서버에 정보를 올리라는 요청

  • Read : 서버에서 정보 불러오라는 요청

  • Update : 정보를 바꾸는 요청

  • Delete : 정보를 지우라는 요청



REST API

원래 CRUD 요청은 각각의 주소를 가졌었고, 서버의 기능을 원하는 클라이언트는 해당 주소로 요청을 보낼 수 있었다.

하지만 이렇게 주소를 각각 만들어나가다 보면 주소가 너무 많아져 관리가 어려워졌고, 이를 개선하기 위해 나온 것이 *REST API이다.

(aws문서를 살펴보면 API가 작동하는 방식은 네 가지 정도가 있는데, 이 중에서 현재 웹에서 가장 많이 사용하는 것은 REST API이다. (=RESTful API) )
*REST는 'Representational State Transfer'의 줄임말

REST API에서는 CRUD를 각각의 주소로 나누지 않고, 하나의 주소로 관리한다.
다만 요청을 보낼 때 어떤 요청을 보냈는지 알 수 있는 문구들(매서드)을 붙여서 함께 전송한다. 매서드들은 아래와 같다.

  • create => POST
  • read => GET
  • update => PUT(전체)/PATCH(일부)
  • delete => DELETE


💬 클라이언트 요청에 대한 서버의 응답

위에서는 주로 '클라이언트의 요청'에 대해서 살펴봤는데,
서버 입장에서 클라이언트의 요청을 받고 나서 어떻게 응답을 해주는지 살펴보자.


HTTP 상태 코드

서버의 응답은 크게 두 가지로 나뉘는데 '잘 됨'과 '잘 안 됨'이다.

잘 됨을 표시할 때 서버는 200번대 코드로 표현하고

잘 안 됨을 표시할 때 서버는 400, 500번대 코드로 표시한다.

우리가 자주 마주하는 404에러도 서버에서 클라이언트에게 '잘 안 됨'이라는 응답을 해주는 것이었다.

400번대와 500번대 코드의 차이점이 있다면
400번대는 클라이언트 요청에서 문제가 있어 잘 안 된 경우
500번대는 서버에 문제가 있어서 잘 안 된 경우이다.

404에러는 특히 정의되지 않은 요청을 보냈을 때 뜨는 에러라고 한다.


JSON 형식

서버가 클라이언트에게 요청을 받고, 요청 받은 데이터를 전달할 때
여러가지 형식을 사용해 데이터를 전달할 수 있다.

과거에는 XML이라는 형식을 널리 사용했지만, 현재 가장 유명한 형식은 JSON이라는 형식이다.

JSON 형식은 중괄호로 시작하고, 키와 값으로 이루어져 있다.

{
  키1 : 값1,
  키2 : 값2,
}




😋 끝맺음

API나 JSON형식을 공부하다 보니 인프런에서 마켓을 만드는 실습을 했을 때 '*postman'을 사용했던 것이 생각났다.

*Postman은 API를 만들고 사용해볼 수 있는 플랫폼이다.

당시에는 그냥 강의를 처음부터 끝까지 따라해보면서 처음 보는 기능들을 접해보는 것에 의의를 뒀었는데, 이제야 postman이 어떤 역할을 하는 플랫폼이었는지 조금이나마 이해가 된다.

사실 오늘 파고들기로 API에 대한 모든 것을 공부했다고 말할 수는 없을 것 같다. 하지만 앞으로 공부해나가는 데 있어서 기초를 쌓았다고 생각하고, 일단 앞으로 나아가본다.

profile
다시 일어나는 중

0개의 댓글