API가 실제로 작동하는 방식: 백엔드 엔드포인트 구축 및 이해를 위한 초보자 가이드
Source: Dev.to
API란 정확히 무엇인가요?
API는 Application Programming Interface(응용 프로그램 인터페이스)의 약자입니다. 두 시스템이 서로 소통할 수 있게 해 주는 다리 역할을 합니다.
레스토랑의 웨이터를 생각해 보세요: 여러분(사용자)이 주문을 하면, 웨이터(API)가 그 주문을 주방(서버)으로 전달합니다. 주방에서 음식을 준비하면, 웨이터가 다시 여러분에게 가져다 줍니다.
기술적으로는 프론트엔드(예: React, Vue, HTML)가 요청을 보내고, API가 그 요청을 백엔드에 전달해 로직을 처리한 뒤, 다시 API가 응답을 반환합니다. 거의 모든 API는 JSON이라는 가벼운 데이터 형식을 사용해 통신합니다.
API 요청은 실제로 어떻게 동작하나요
인스타그램, 스냅챗 또는 다른 앱에서 “로그인” 버튼을 클릭하면, 브라우저가 데이터를(보통 JSON 형태) 모아 인터넷을 통해 전송합니다.
- DNS 조회 – 도메인 네임 시스템이 웹사이트 이름을 IP 주소로 변환해 요청이 올바른 서버에 도달하도록 합니다.
- 미들웨어 레이어 – 보안 체크포인트가 로깅, 인증 및 기타 전처리를 수행해 요청이 백엔드 컨트롤러에 도달하기 전에 처리합니다.
- 컨트롤러 – 작업의 두뇌 역할; 비즈니스 로직을 처리하고 데이터베이스에 쿼리를 실행합니다.
- 응답 – 백엔드가 결과를 구조화된 JSON 응답으로 만들고 네트워크를 통해 다시 전송하면, 프론트엔드가 정보를 풀어 UI를 업데이트합니다(예: 로그인 성공 또는 오류 표시).
이 전체 왕복은 보통 몇 밀리초 안에 이루어져, 사용자는 즉시 반응을 느낍니다.
REST API란?
REST(Representational State Transfer)는 대부분의 현대 API가 채택하고 있는 표준 아키텍처입니다. REST는 다음과 같은 엔드포인트를 사용합니다:
GET /api/users
POST /api/login
GET /api/products/:id
DELETE /api/posts/12
HTTP 메서드
- GET – 데이터 조회
- POST – 데이터 전송
- PUT – 데이터 업데이트
- DELETE – 데이터 삭제
일반적인 상태 코드
200– OK201– Created(생성됨)400– Bad Request(잘못된 요청)404– Not Found(찾을 수 없음)500– Server Error(서버 오류)
엔드포인트란?
엔드포인트는 URL + HTTP 메서드가 결합된 것으로, 특정 동작을 수행합니다.
예시
| 동작 | 예시 엔드포인트 |
|---|---|
| 모든 사용자 조회 | GET /api/users |
| 특정 상품 조회 | GET /api/products/:id |
| 계정 생성 | POST /api/register |
| 로그인 | POST /api/login |
엔드포인트 입력 종류
Route params: /users/:id
Query params: /search?keyword=api
Body data: { "email": "test@gmail.com" }
첫 번째 API 엔드포인트 만들기
설정
npm init -y
npm install express
server.js 파일을 만들고 다음 코드를 추가합니다:
// server.js
const express = require('express');
const app = express();
const PORT = 3000;
// Simple GET Endpoint
app.get('/api/hello', (req, res) => {
res.json({ message: 'Hello, world!' });
});
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
동작 원리
app.get()– GET 요청을 청취/api/hello– 엔드포인트 URLreq– 들어오는 요청(입력 데이터)res– 서버 응답(출력 데이터)
POST 엔드포인트 (데이터 전송)
app.use(express.json()); // To read JSON body
app.post('/api/register', (req, res) => {
const { name, email } = req.body;
res.status(201).json({
message: 'User created successfully',
data: { name, email }
});
});
미들웨어란? (초보자용)
미들웨어 = 메인 로직 이전에 실행되는 함수들.
app.use((req, res, next) => {
console.log(`${req.method} ${req.url}`);
next();
});
주요 활용 사례
- 로깅
- 인증
- 데이터 검증
- CORS 처리
미들웨어는 백엔드 시스템의 큰 부분을 담당합니다.
API가 데이터베이스와 통신하는 방식
Endpoint → Controller → Database → Response
단순화된 예시
app.get('/api/user/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
res.json(user);
} catch (error) {
res.status(500).json({ message: 'Server error' });
}
});
데이터베이스를 아직 사용하지 않더라도, 이 흐름은 모든 백엔드에서 나타납니다.
Postman 또는 Thunder Client로 API 테스트하기
테스트 예시
GET 요청
- GET 선택
http://localhost:3000/api/hello입력- Send 클릭
POST 요청
- POST 선택
- 엔드포인트 입력(예:
http://localhost:3000/api/register) - Body → JSON 로 이동해 데이터 추가:
{
"name": "Kelvin",
"email": "kelvin@example.com"
}
테스트 도구를 사용하면 프론트엔드를 만들지 않아도 API를 검증할 수 있습니다.
마무리
API는 프론트엔드, 데이터베이스, 서드파티 서비스 등을 연결하는 보이지 않는 접착제입니다. 요청이 엔드포인트에서 로직을 트리거하고, 미들웨어가 파이프라인을 보호하며, 구조화된 응답이 루프를 닫는 전체 흐름을 이해하면, 단순 함수 작성에서 벗어나 견고하고 확장 가능한 시스템을 설계할 수 있게 됩니다. 이러한 기본 지식은 백엔드를 “블랙 박스”가 아닌, 데이터가 예측 가능하게 흐르는 논리적인 워크플로우로 전환시켜 줍니다.