카테고리 없음

프론트랑 백엔드는 어떻게 대화할까 — API와 REST 편하게 정리

ondalgirl 2026. 9. 16. 21:08

데이터베이스에 데이터가 아무리 잘 저장돼 있어도, 프론트엔드(화면)랑 백엔드(서버)가 서로 대화할 방법이 없으면 소용없겠죠? 그 대화 규칙이 바로 API예요. 오늘은 API랑 REST를 편하게 풀어볼게요.

API가 뭐냐면요

**API(Application Programming Interface)**는 백엔드한테 요청하기 위한 규약이에요. "이렇게 물어보면 이렇게 답해줄게"라는 약속이라고 보면 돼요.

API 주소는 이렇게 생겼어요

 
/api/[{version}]/{documents}/{document}

예를 들면 이런 식이에요.

 
/api/v1/users/1

API 주소를 지을 때 원칙이 하나 있어요. 주소는 명사형으로 짓는다는 거예요. 동사형(예: /api/getUser)보다는 명사형(/api/users/1)으로 지어야, 이 주소가 무슨 자원을 다루는지 명확하게 이해가 되거든요. 다만 예외도 있어요. login처럼 명사형보다 동사형이 오히려 더 명확한 경우엔 동사형을 쓰기도 해요.

Method — CRUD 중에 뭘 하는 건지 알려주는 것

API 주소만으로는 부족해요. "이 주소로 뭘 하고 싶은지"도 알려줘야 하는데, 그게 바로 **Method(요청 타입)**예요. CRUD랑 맞춰보면 이래요.

CRUDMethod
Create (생성) POST
Read (조회) GET
Update (수정) PUT, PATCH
Delete (삭제) DELETE

요청/응답 데이터 구조

요청할 때 보내는 데이터 구조는 Key=Value 형식이 가장 단순해요. 근데 실제로 제일 많이 쓰는 건 **객체 타입(JSON 구조)**이에요. JSON은 여러 개의 key=value 쌍을 한꺼번에 담을 수 있거든요. 응답 받는 데이터 구조도 요청이랑 똑같은 형식이에요.

REST API란?

**REST API(Representational State Transfer)**는 State Transfer(상태 전달)를 강조하는 API 규약이에요. 여기서 말하는 **State(상태)**는, IT 분야에서는 그냥 **Data(데이터)**라고 이해하는 게 가장 쉬워요.

REST API의 목적은 백엔드 서버를 Stateless하게 만들기 위해 필요한 데이터를 주고받는 규약을 정하는 거예요.

  • Stateful: 데이터를 가지고 있는 상태
  • Stateless: 데이터를 안 가지고 있는 상태

여기서 중요한 원칙 하나! 백엔드 서버는 Stateless해야 하고, DB는 Stateful해야 해요. 즉, 서버 자체는 "기억"을 갖고 있지 않고, 모든 데이터는 DB가 책임지는 구조가 이상적이라는 뜻이에요. 이렇게 해야 서버를 여러 대로 늘리거나 줄여도(스케일링) 문제가 안 생겨요.

SWAGGER — API 문서화 도구

Swagger는 API를 문서화해주는 솔루션이에요. 온라인 웹페이지 형태로 되어 있고, 문서를 보는 것뿐만 아니라 그 자리에서 API 테스트까지 할 수 있어요. 실제 예시로 https://petstore.swagger.io/ 같은 사이트가 있어요.

데이터 CRUD, 실제로 어떻게 처리할까?

DB에 데이터를 CRUD하는 방법은 크게 두 가지예요.

  1. 직접 처리: RDB면 SQL, NoSQL이면 내장 함수를 직접 써서 처리
  2. ORM(Object Relation Mapping) 사용: 애플리케이션이랑 DB 사이를 중계해주는 기법

ORM이 뭐가 좋을까?

ORM을 쓰면 DB를 갈아끼우기가(탈착) 훨씬 유연해져요. 그래서 실무에서는 2번째 방법을 많이 써요. ORM은 쉽게 말해 "SQL로 통역해주는 통역사" 같은 존재예요. 개발자가 굳이 SQL 문법을 직접 안 짜도, ORM이 알아서 SQL로 바꿔서 DB에 요청해줘요.

IT의 대원칙, 여기서도 등장!

앞서 다뤘던 느슨한 결합(Loosely Coupling) 원칙, 기억나시죠? ORM도 사실 이 원칙을 지키기 위한 좋은 예시예요. 해결 패턴(모범 사례)은 바로 중간자를 두는 것! 애플리케이션이랑 DB가 직접 딱 붙어있지 않고, ORM이라는 중간자가 껴 있으니까 DB를 바꿔도 애플리케이션 코드에 주는 영향이 최소화되는 거죠.

정리해볼게요

  • API는 백엔드한테 요청하는 규약이고, 주소는 명사형으로 짓는 게 원칙
  • Method(POST/GET/PUT·PATCH/DELETE)로 CRUD 중 뭘 할지 알려주고
  • REST API는 서버를 Stateless하게, DB를 Stateful하게 만들기 위한 규약
  • Swagger로 API를 문서화하고 테스트할 수 있고
  • ORM은 애플리케이션이랑 DB 사이의 통역사 역할을 해주는 중간자