API 와 REST API

hsmiK·2024년 3월 15일

공부기록

목록 보기
3/8

💻 API

✅ API 개념

여러분은 버스 시간을 미리 확인하고 싶을 때 어떤 어플을 사용하시나요 ?
카카오버스 ? 네이버맵 ?? 아니면 개인이 만든 어플 ???

그렇다면 위 어플들은 어떻게 버스 시간표 관련 정보를 수집해서 만드는걸까요 ??
대기업한테는 버스 시간 정보를 제공하고 개인들은 알아서 정보를 수집해야할까요 ??
개인은 버스 시간표를 어떻게 알고 관련 어플을 만드는걸까요 ??
혼자 버스 시간표를 찾아서 만들어야 하나요 ??

NO!!

정답은 " API 를 활용하여 만든다 " 입니다!!

API(Application Programming Interface) 는 하나의 애플리케이션이 다른 애플리케이션이랑 상호작용하기 위해 사용되는 인터페이스이다

보통 데이터를 주고 받거나 서비스를 호출하는데 사용된다

직접적으로 내부에 저장된 데이터를 건드는 것은 아니고 외부에서 사용할 수 있게끔 내부의 중요 내용은 가려두고 이용한다. 여기 인터페이스에는 외부에서 사용할 수 있는 기능이나 데이터 형식, 호출 방법 등이 정의되어 있다

예를 들어 버스 시간표 어플을 사용할 때 공공데이터 포털에서 서울 버스 시간표 API 정보를 받아와 시간표를 사용자에게 어플에서 제공하는 방식으로 사용된다

쉽게 비유하기
손님 : 클라이언트
메뉴판 : API
레스토랑 요리 : 받고 싶은 기능, 데이터

API는 손님(프로그램)이 주문할 수 있게 메뉴판(명령 목록)를 제공하고 주문(명령)을 받으면 요리사(프로그램)와 상호작용한 후 요청된 메뉴(명령에 대한 값)를 전달한다

✅ Interface 개념

위에 나온 Interface의 개념에 대해 추가 설명

Interface 는 서로 다른 두 개의 시스템 중간에서 장치 사이의 정보나 신호의 교환을 주고 받을 때 중재하는 역할을 하는 시스템이다

즉 사용자가 기기를 쉽게 작동시키는데 도움을 주는 시스템

GUI (Graphic User Interface)

  • 컴퓨터(프로그램)에게 명령을 내릴 때, 그래픽을 사용해서 명령을 내리는 방식
  • 예시 : 바탕화면 아이콘 클릭으로 명령 ...

CLI (Command Line Interface)

  • 컴퓨터(프로그램)에게 명령을 내릴 때, 명령어를 통해 명령을 내리는 방식
  • 예시 : cmd 화면에서 명령어 입력 ...

💻 REST API

✅ REST API 개념

REST (Representational State Transfer) API 는 API의 한 종류로, 웹 서비스 간의 통신을 위한 아키텍처 스타일이다. 즉 HTTP 규약을 잘 지키는 API

그럼 API 데이터는 요청하는데로 아무렇게나 주면 되나요 ??
NO!!

웹 (인터넷망 속에 가상 공간) 개발자는 인터넷망을 돌아다니기 위한 규약을 지켜야 한다
= HTTP 를 꼭 지켜야한다

과거 HTTP 형식을 지키지 않고 이용하기도 했으나, HTTP 형식을 잘 지키고 사용하면 API 활용 효율이 극대화 되기 때문에 HTTP 규약을 잘 지키는 REST API 활용하자

✅ HTTP 개념

HTTP( HyperText Transfer Protocol) 는 서버와 클라이언트 사이에서 메세지 교환 방식을 정해 놓은 규칙이다. 요청과 응답으로 구성되어 있다.

인터넷으로 연결된 클라이언트와 서버는 웹 프로토콜인 HTTP를 사용하여 데이터를 주고받는다

인터넷 상에서 공유,전달하고 싶은 모든 자료들은 HTTP 에 넣어서 보내야한다!

클라이언트에서 데이터를 Request 하면 서버에서 요청받은 데이터에 대한 Response 가 있어야한다. 단, 각각의 데이터 요청과 응답은 독립적으로 관리된다. 즉 연결되어 있지 않다 . 즉 stateless 하다

HTTP 요청이 독립적으로 처리되고 이전 요청과 상태 정보를 공유하지 않기 때문에 쿠키 세션 의 개념이 등장

✅ HTTP 프로토콜 템플릿

  • 통신 상태가 어떤지 설명
    200 : 정상이다
    400 : 클라이언트가 원하는 걸 못 찾겠다
    404 : 리소스를 찾을 수 없다
    500 : 서버가 이상하다 ...

우리는 이 숫자들을 HTTP (status) code 라 부른다

  • 응답이 어떤 형태인지 작성

<예시>

GET / HTTP/1.1
Host: www.naver.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Body

  • 실제로 전달되는 데이터 제공

<예시>

(헤더 부분 생략)

<HTML>
<HEAD><TITLE>Example</TITLE></HEAD>
<BODY>
<H1>Hello, World!</H1>
</BODY>
</HTML>

💻 URL

✅ URL 개념

먼저 클라이언트에서 웹 서버로 웹페이지 주소를 요청할 때는 어떤 방법을 사용할까요 ?

URL (Uniform Resource Locator) 은 웹상에서 특정 자원의 위치를 나타내는 주소이다. 클라이언트가 웹 브라우저를 통해 웹 서버에 요청을 보낼 때 해당 자원이 위치한 곳을 찾을 수 있도록 한다.

정리하면 URL이 하는 일은

  1. 인터넷 상에서 웹 페이지가 어디있는지 위치를 알려준다
  2. 데이터 연산 해달라고 서버에 요청을 보내는 역할을 한다

✅ API 설계

URL + Method => API 설계

RESTful 한 URL을 설계하는 몇 가지 규칙이 존재한다
RESTful 은 API 가 REST 원칙을 잘 준수하여 설계되었다는 것을 의미

  • 대문자 사용하지 않고 소문자만 사용한다
  • _ 사용하지 않고 - 을 사용한다
  • 마지막에 / 사용하지 않는다
  • 행위를 포함하지 않는다 = 목적을 포함하지 않는다 (동사/행위 x 명사 o)
  • 파일 확장자 포함하지 않는다
  • 복수형을 사용한다 / 이유 : (상품"들" 중에 id값을 가지는 개별 데이터) (통일감)
GET http://localhost:8888/books   # 모든 책 목록을 가져오는 요청   

GET /books/1      # ID가 1인 책을 개별 조회하는 요청
GET /books/2      # ID가 2인 책을 개별 조회하는 요청
POST /books       # 새로운 책을 추가하는 요청
PUT /books/1      # ID가 1인 책의 정보를 수정하는 요청
DELETE /books/1   # ID가 1인 책을 삭제하는 요청

HTTP Method

GET - 조회
POST - 등록
PUT - 수정
DELETE - 삭제

💻 앞으로 할 일

공공데이터는 여기에 많으니 여기서 API 사용하면 좋다

공공데이터

Open API는 외부 사이트에서 자유롭게 활용할 수 있도록 설계된 API이다
여러 빅테크 기업에서 Open API를 제공하니 이 API를 활용하여 프로젝트를 진행해봐야겠다

네이버 API
카카오 API

profile
반갑습니다

0개의 댓글