[Node.js] Node로 간단한 API 만들기, 웹 서버 만들어보기

728x90

오늘은 node.js로 간단한 API를 만들어 보려고 합니다.

프로젝트에서 node를 사용하려고 하면서 간단한 API 정도는 만들어 봐야 감도 잡히고 잘될 것 같으니까요

 

 

1. node 설치

이미 예전부터 설치했던 거라 캡처 사진이 없네요..

아래 링크를 참고해주세요

https://velog.io/@ljs923/Node.js-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EB%B0%8F-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

Node.js 다운로드 및 설치하기

Node.js 홈페이지 접속https://nodejs.org/en18버전 20버전 아무거나 다운로드 해도 상관 없으나 추천해준 버전으로 다운로드(추천 버전은 3년동안 안정적으로 사용할 수 있음.)Next라이센스 동의 체크 후

velog.io

 

1-1 버전 확인

npm -v

node -v

버전 확인해주세요 (대부분 어떤 버전이든 가능하겠지만)

npm 버전 : 10.8.2

node 버전 : 22.7.0

 

 

2. express install

npm install express

 

npm install express로 express를 설치해주세요

node.js에서 서버와 같은 역할을 해줍니다.

 

 

3. index.js 파일 생성(feat. 예제)

// index.js
const express = require('express');
const app = express();
const PORT = 3000;

// JSON 형식의 요청 본문을 처리할 수 있도록 설정
app.use(express.json());

// 샘플 데이터 (기본 사용자 목록)
let users = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
];

// 사용자 목록 조회 (Read)
app.get('/users', (req, res) => {
    res.json(users);
});

// 특정 사용자 조회 (Read)
app.get('/users/:id', (req, res) => {
    const user = users.find(u => u.id === parseInt(req.params.id));
    if (!user) return res.status(404).send('User not found');
    res.json(user);
});

// 서버 시작
app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

 

3-1. express란?

express란 node.js를 위한 웹 애플리케이션 프레임워크입니다. 즉 HTTP URL 메소드를 유연하게 사용할 수 있도록 도움을 주는 프레임워크입니다.

즉 HTTP URL 메소드를 node.js에서 직접적인 작업을 지원하지 않기 때문에 그것을 쉽게 지원하는게 express다 라고 이해하시면 될 것 같습니다. (다음엔 Express에 대해 조사해서 작성해보겠습니다)

 

 

4. 실행 

node index.js

서버 실행하도록 명령어를 입력합니다.

 

 

5. 웹 브라우저 확인

브라우저에서 localhost:3000을 검색하면 아래와 같이 나올 것입니다.

 

에러가 나옵니다. 왜냐하면

코드를 자세하게 보면 코드상 아무것도 없는 

"localhost:4000"

이라는 것에 대한 처리 코드가 없기 때문입니다.

 

코드와 같이 사용, 확인 가능한 주소는 

  • localhost:4000/users
  • localhost:4000/users/:id

입니다.

 

이 방식은 get 방식이겠죠?

post 방식은 웹 화면 구현하면서 post로 지정해서 웹 주소에 작성했을 때 값도 함께 담아서 주면 post 방식이 될 것이고

delete, update 방식도 될 것입니다.

예제 코드는 실제 코드를 구현하면서 추후에 다시 올리도록 하겠습니다.

728x90