본문 바로가기

달밤에 코딩하기/커뮤니케이션을 위한 IT 지식

#5-개발자와 API (API, RESTful API, CRUD, JSON)

API란

Application Programming Interface의 약자이며, 클라이언트와 서버가 각각의 다른 프로그램에서 요청과 응답을 주고받을 수 있게 만든 체계다. 자세한 설명은 아래와 같다.

개발자에 따른 API

  1. 백앤드 개발자 / 서버 개발자 : 서버 프로그램 및 API를 개발한다.
  2. 프론트 개발자 / 클라이언트 개발자 : API를 사용한다.

API의 체계

 

API는 다음과 같이 동작하게 되어있는 체계이다. 기본적으로 API는 CRUD에 대한 요청을 처리한다. 여기서 "서버 주소 = IP주소 = 도메인"이라고 생각하면 된다.

  1. A 프로그램의 클라이언트가 "서버 주소/00"에 00을 요청한다.
  2. B 프로그램의 서버가 "서버 주소/00"에서 해당 데이터를 JSON 파일에 담는다.
  3. B 프로그램의 서버가 JSON을 A 프로그램의 IP 주소로 전송한다.

CRUD와 RESTful API

그렇다면 CRUD는 무엇일까? CRUD는 생성/불러오기/수정/삭제를 의미한다. 그런데 CRUD는 각각의 기능이기 때문에 각각의 주소를 가진다. 이로 인해 너무 많은 주소가 생성되고, 관리 포인트가 늘어나 개발자들은 이 문제를 개선하고 싶어 했다.

 

그로 인해 REST(Representational state transfer)한 API인, RESTful API 형식이 탄생하였다. RESTful API는 주소를 하나만 사용한다. 대신 Method를 더해 사용한다. 여기서 Method는 요청의 종류를 구분하기 위한 태그와 유사한 것이다. 즉, "서버 주소/blog"만 서버에 전달되면 서버가 어떤 요청인지 모르지만, 여기에 "POST"라는 태그를 달아 전달하면 생성 요청인 것을 서버가 알 수 있다.

 

  각각의 주소 RESTful API + Method
Create 생성하기 서버 주소/blogCreate 서버 주소/blog + POST
Read 불러오기 서버 주소/blogRead + GET
Update 수정하기 서버 주소/blogUpdate + PUT(전체)/PATCH(일부)
Delete 삭제하기 서버 주소/blogDelete + DELETE

JSON이란

JSON의 로고

앞서 API의 체계에서 JSON에 데이터를 담는다고 했다. 그럼 JSON은 뭘까? JSON "키-값 쌍"으로 이루어진 표준 포맷이다. 여러 형태로 데이터를 주고받으면 효율이 떨어지니, 가장 유명한 포맷인 JSON포맷을 사용하여 JSON파일에 담는 것이다. JSON의 포맷은 아래와 같이 생겼다.

 

<!-----형식----->
{
    key: value,
    key: value
}

<!----위도 경도 데이터 예시---->
{
    lat: 37.782293,
    lng: -122.391240
}

 

API에 대한 응답

google의 404error

API를 통해 클라이언트가 서버로 요청을 보냈을 경우, 여러 답을 받을 수 있다. 개발자들은 이를 명확하게 번호로 표기하며, 100 단위 숫자에 따라 성공/클라이언트 에러/서버 에러로 구분하여 사용한다. 이를 HTTP 상태 코드라고 한다.

  1. 200번대 코드 : 성공
  2. 400번대 코드 : 클라이언트의 요청에 문제가 있는 경우. 대표적으로 404 에러가 있다.
  3. 500번대 코드 : 서버에 문제가 있는 경우. 대표적으로 500 에러가 있다.

API의 활용

위에서 API란 "클라이언트와 서버가 각각의 다른 프로그램에서 요청과 응답을 주고받을 수 있게 만든 체계"라고 했다. 즉, 호텔 예약 서비스(클라이언트)에서 구글맵(서버)에 요청하여 지도 정보를 가지고 올 수 있다는 말이다. 여기서 API를 제공해주는 구글 맵을 SDK(Software Development Kit)라고 한다. 

 

구글 맵에서는 많은 API를 사용할 경우 유료로 진행한다. 때문에 실제 google map의 API를 사용하려면 google Developer에 가입 후, API Key를 발급받아야 API를 사용할 수 있다.

 

#Google Developer

https://developers.google.com/maps?hl=ko 

 

Google Maps Platform  |  Google Developers

수백만 개의 웹사이트와 앱에서 Google Maps Platform을 사용하여 사용자에게 효과적인 위치 환경을 제공합니다.

developers.google.com