eatthefrog
API 서버 본문

위 사진처럼 API서버는 데이터베이스의 데이터들을 가공해서 클라이언트에게 전달하는 역할을 한다.
기본적으로 데이터베이스는 웹, 앱을 사용하는 클라이어트는 접근을 막는다.
대신에 클라이언트에게 대신 데이터를 전달 해주는 API서버 에게는 연결을 허용해준다.
🥑보통 데이터베이스는 외부 클라이언트의 네트워크 연결을 하지 못하도록 방화벽을 설정한다. (물론 오픈할 수도 있다.)
보안을 위해서 데이터베이스에 접근할 수 있는 건 API서버(WAS서버), 서비스 관리자 등으로 한정한다.
보통 이때 특정 IP주소를 허용하는 방식으로 데이터베이스 연결을 관리하곤 한다.
🥑네트워크 통신을 할 때 신경써야 할 부분 중 하나는 보안이다. 어느 컴퓨터나 서로 연결되다면 컴퓨터의 중요한 정보들이 유출될 수 있다.
그래서 컴퓨터끼리 네트워크 연결을 제한하는 방화벽을 설정한다. 이때 방화벽이란 IP주소, 포트번호등 네트워크 연결에 쓰이는 정보들을 바탕으로 연결을 제한하는 것을 의미한다.

API 서버에는 많은 API요청을 처리할 수 있다. 위 사진처럼 상품 정보 받아오기 등 다양한 요청을 처리할 수 있도록 백엔드 개발자가 API 서버 개발을 하게 된다.
🥑 프론트엔드(웹, 앱)에게 데이터를 제공하는 API서버를 WAS(Web Application Server)라고 한다. API서버가 조금 더 넓은 개념이고 WAS는 프론트엔드에게 데이터를 건내주는 서버를 한정지어서 얘기한다.
API : 프로그램과 프로그램사이의 중개자 역할을 하는 규칙들의 집합
- 접근할 프로그램의 규칙이 잘 자여지지 않고 복잡한 경우
- 프로그램 보안 상 외부에서누구나 사용할 수 없고 제한된 기능들을 간접적으로 제공하고 싶을 때

API가 대신해주는 프로그램의 기능들을 미리 정리해서 규칙을 잘 세워두면 클라이언트는 접근할 프로그램을 모르더라도 API에 따라 손쉽게 통신을 할 수 있다. 보통 API를 개발한다는 것은 중개해주는 프로그램을 대신해주는 것이기에 해당 프로그램을 충분히 잘 이해하며 잘 규격화해야 한다.
const server = app.listen(3001, () => {
console.log("Start Server : localhost:3001");
});
app.get('/api/users/:type', async (req, res) => {
let {
type
} = req.params;
if (type == 'seoul') {
let data = [
{name:"홍길동", city:"Seoul"},
{name:"김철수", city:"Selul"},
]; res.send(data);
}else if (type == 'jeju') {
res.send('Type is not correct');
}
});

그렇게 되면 클라이언트 프로그램은 접근해야하는 프로그램에 접근하지 않고 편하게 API를 통해 정보를 요청할 수 있다. 대표적으로 API서버는 로그인하기, 사움정보 보기, 결제하기등 규칙들이 정의되어 있으며 클라이언트는 데이터베이스가 아닌 API서버와 통신한다.
< API 문서>

보통 웹에서 로그인을 할 때 '카카오 로그인'기능을 많이 넣는다. 그러면 클라이언트(개발자)들은 카카오 서버 개발자가 개발한 서버 API를 이용하게 된다. 이때 카카오 로그인 API문서를 보면 어디(url)에 무엇을(Parameter)을 보내면 무슨 응답(Response)을 줄지가 전부 약속되어 있는것을 확인할 수 있다.
'백엔드 노트' 카테고리의 다른 글
| GraphQL: A query language for your API 공식문서 읽기 (2) | 2025.06.18 |
|---|---|
| Apollo Server로 GraphQL API 만들기 (0) | 2025.06.16 |
| REST API의 한계와 GraphQL (2) | 2025.06.16 |
| 백엔드 개발자들이 실제로 회사에서 하는 일 (3) | 2024.12.16 |
| 서버 스케일링 처리와 트래픽 병목현상 (1) | 2024.12.16 |