[DevCamp] API? REST API?

동건·2025년 2월 7일
0

DevCamp

목록 보기
9/85

API란?

백엔드 개발자는 API를 만든다.
API는 "Application Programming Interface"의 줄임말이다.

쉽게 말하면, 원하는 기능을 편하게 사용할 수 있도록 도와주는 것이다.

예를 들면,
지하철 도착 알림 앱이나, 카카오맵, 네이버 지도와 같은 서비스가 있다.
이 서비스들은 각자의 데이터베이스에서 정보를 가져와 사용자에게 보여주는데,
이때 API를 사용해서 데이터를 주고받는다.

인터페이스란?

인터페이스는 쉽게 말하면
서로 다른 것들이 원활하게 소통할 수 있도록 도와주는 역할을 한다.

  • GUI (Graphic User Interface) :
    그래픽을 이용해서 명령을 내리는 방식 (예: 버튼 클릭)
  • CLI (Command Line Interface) :
    명령어를 입력해서 조작하는 방식 (예: 터미널에서 명령어 입력)

REST API란?

API라고 해서 무조건 데이터를 아무렇게나 주고받는 것은 아니다.
예전에는 HTTP 형식을 안 지키고 대충 데이터를 전달하는 경우가 많았지만,
HTTP를 만든 사람들이 "형식을 잘 따르면 더 효율적이다!"리고 강조를 했다.

그래서 나온 개념이 REST API 이다.
REST API는 HTTP 규칙을 잘 따르는 API라고 보면 된다.

  • REST API : HTTP 규칙을 잘 따른 API
  • RESTful API : HTTP 규칙을 더 철저하게 따른 API

웹 개발자는 인터넷 환경에서 통신을 하기 위해
HTTP 규칙을 잘 따라야한다.

REST API는 이런 규칙을 지키면서 데이터를 주고받는 방식이다.


HTTP에 담아 보내야 하는 것들

인터넷에서 데이터를 주고받을 때는 HTTP 프로토콜을 사용한다.

HTTP 요청 템플릿

Head 부분

  1. 통신 상태
  2. 응답 상태

Body 부분

  1. 전달할 데이터 (예 : 화면에 보여줄 내용)
  2. 요청 목적 (예: 데이터를 주세요~)

요청을 어떻게 보낼까? = URL

URL(Uniform Resource Locator) 은 웹에서 특정 자원의 위치를 알려주는 주소이다.
하지만 단순한 위치 정보뿐만 아니라,
특정 데이터를 요청하는 방법으로도 사용된다.

예를 들면,

  • http://localhost:8888 -> 전체 상품 조회
  • http://localhost:8888/상품등록 -> 상품 등록
  • http://localhost:8888/전체상품삭제 -> 전체 상품 삭제

API 설계 연습 1 : REST API URL 규칙

  1. 대문자 사용 X -> 소문자만 사용
  2. 언더바(_) 사용 X -> 하이픈(-) 사용
  3. 마지막에 '/' 포함 X
  4. 행위를 포함하지 않는다 (예: /get-products 대신 /products )
  5. 파일 확장자 포함 X
  6. 복수형을 사용한다.

예시:

  • 상품 등록 -> POST /product
  • 전체 상품 조회 -> GET / products
  • 전체 상품 삭제 -> DELETE /products

API 설계 연습 2 : RESTful API URL 예제

  1. 상품 전체 "조회" -> GET /products
  2. 상품 개별 "조회" -> GET /products/{id}
    • GET /products/1 -> id=1인 데이터를 요청
    • GET /products/2 -> id=2인 데이터를 요청
  3. 상품 개별 "수정" -> PUT /products/{id}

cf. 왜 복수형을 쓰는 게 좋을까?

  • 상품이 여러개 존재하기 때문 (/product 보다는 /products 가 더 자연스러움)
  • 일관성을 유지할 수 있음

이런식으로 RESTful 한 API를 설계하면
더 직관적으로 확장성이 좋은 API를 만들 수 있다!


TIL

오늘은 API와 설계 방법에 대해 알아보았다.
GET , POST , DELETE 등 여러 행위에 대해서도 알았고
REST API 와 RESTful API의 차이점에서도 알아보았다.

백엔드 개발자로 갈길은 멀지만 한 걸음 다가간 것 같아 뿌듯하다.

profile
배고픈 개발자

0개의 댓글