처음에는 "백엔드를 어떤 방식으로, 어떻게 선택해야 할까?" 라는 고민에서,,익숙한 JavaScript를 사용하여 백엔드를 구축하고자 했습니다.
JavaScript를 사용할 수 있는 환경으로 Node.js를 선택했습니다. Node.js는 서버 측에서 JavaScript를 실행할 수 있는 환경을 제공하여 익숙한 언어로 서버를 개발할 수 있게 해줍니다.
Node.js 환경에서 사용하기 좋은 기술들을 다음과 같이 선정하였습니다.
데이터베이스:
웹 프레임워크:
프로젝트 디렉토리를 생성하고 필요한 npm 패키지를 설치하였습니다.
Express.js를 사용하여 서버를 초기화하고, body-parser와 CORS를 설정했습니다.
body-parser는 Express에서 HTTP 요청의 본문을 해석하는 미들웨어입니다.
예전에 팀 프로젝트에서 백엔드에서 CORS 설정을 하지 않아 프론트엔드 개발 중에 CORS에 대해 처음 알게 되었습니다.
메모를 추가, 조회, 수정, 삭제하기 위한 RESTful API 엔드포인트를 작성했습니다.
GET /api/notes
POST /api/notes
PUT /api/notes/:id
DELETE /api/notes/:id
서버가 정상적으로 작동하는지 확인하기 위해 기본 경로 핸들러를 추가했습니다. 서버를 실행하면 다음과 같은 문구가 화면에 나타납니다.
Todo List 앱의 백엔드 서버랍니다~~ :) ,,
app.get("/", (req, res) => {
res.send("Hello, this is the backend server for the Todo List App!");
});
node server.js
서버를 실행한 후 Postman으로 테스트 했습니다.
데이터베이스 작업에 대한 경험은 Firebase에서 시작되었습니다. Firebase에서도 데이터를 추가하고 조회하는 등의 기능을 실행하기 위해 Firebase에서 제공하는 메서드들이 있었습니다. SQL에서는 이러한 작업을 SQL 쿼리를 사용하여 수행한다고 생각하며, 상호작용하는 데 비슷한 개념으로 접근할 수 있었습니다.
SQL과 쿼리가 뭐지?
SQLite3를 사용하여 로컬 파일에 데이터를 저장하도록 설정했습니다. 데이터베이스 파일은 notes.db
로 저장되며, 메모를 저장하기 위한 notes
테이블을 생성했습니다.
notes
테이블을 생성하는 SQL 쿼리를 실행했습니다. 테이블이 이미 존재하지 않으면 새로 생성되며, id
와 content
열을 포함하게 합니다.
간단하게 백엔드 서버를 구축하면서 Node.js와 Express.js, 그리고 SQLite3를 사용하여 RESTful API를 구현해보았습니다. Next.js에서 API 구현 경험이 있어서인지 검색해보고 구현할 만 했습니다. 추가로 백엔드와 협업 시 서버 설정에 대한 CORS 에러 같은 것들을 겪었기 때문에 당황하지 않을 수 있었습니다. Next.js와 Vercel이 참 간편했다는 것을 다시 느꼈습니다!