[백엔드 구축] 간단한 메모장 서비스 Express.js , SQLite 백엔드 구축

Lia·2024년 6월 22일
0
post-thumbnail

aws 배포하러가기


기술선택 과정과 이유

처음에는 "백엔드를 어떤 방식으로, 어떻게 선택해야 할까?" 라는 고민에서,,익숙한 JavaScript를 사용하여 백엔드를 구축하고자 했습니다.

Node.js 환경 선택

JavaScript를 사용할 수 있는 환경으로 Node.js를 선택했습니다. Node.js는 서버 측에서 JavaScript를 실행할 수 있는 환경을 제공하여 익숙한 언어로 서버를 개발할 수 있게 해줍니다.

기술 스택 선정

Node.js 환경에서 사용하기 좋은 기술들을 다음과 같이 선정하였습니다.

  1. 데이터베이스:

    • SQLite3: 경량의 관계형 데이터베이스로, 설정이 간단하고 SQL과 쿼리를 사용하여 데이터를 관리할 수 있습니다.
  2. 웹 프레임워크:

    • Express: Node.js에서 RESTful API를 쉽게 구현할 수 있는 간단한 웹 프레임워크입니다.

최종 선택 이유

  • JavaScript 사용: 프론트엔드와 동일한 언어를 사용할 수 있어 개발 생산성이 높아집니다.
  • SQLite3: 로컬 파일 기반 데이터베이스로 설정이 간단하고, Node.js 환경에서 SQL과 쿼리를 사용하여 데이터를 쉽게 관리할 수 있어 선택했습니다.
  • Express: RESTful API 구현이 용이하여 선택했습니다.

기술 스택 구성

  • Node.js: 서버 측 JavaScript 실행 환경
  • SQLite3: 경량의 관계형 데이터베이스
  • Express: 간단한 서버측 웹 프레임워크

프로젝트 초기 설정

프로젝트 디렉토리를 생성하고 필요한 npm 패키지를 설치하였습니다.

1. 기본 서버 설정

Express.js를 사용하여 서버를 초기화하고, body-parserCORS를 설정했습니다.

body-parser는 Express에서 HTTP 요청의 본문을 해석하는 미들웨어입니다.

  • 주로 POST, PUT, PATCH와 같은 메서드에서 데이터를 전달할 때 사용됩니다.

예전에 팀 프로젝트에서 백엔드에서 CORS 설정을 하지 않아 프론트엔드 개발 중에 CORS에 대해 처음 알게 되었습니다.

2. RESTful API 엔드포인트 작성

메모를 추가, 조회, 수정, 삭제하기 위한 RESTful API 엔드포인트를 작성했습니다.

  • 메모 리스트 가져오기: GET /api/notes
  • 메모 추가하기: POST /api/notes
  • 메모 수정하기: PUT /api/notes/:id
  • 메모 삭제하기: DELETE /api/notes/:id

3. 기본 경로 핸들러 추가

서버가 정상적으로 작동하는지 확인하기 위해 기본 경로 핸들러를 추가했습니다. 서버를 실행하면 다음과 같은 문구가 화면에 나타납니다.
Todo List 앱의 백엔드 서버랍니다~~ :) ,,

app.get("/", (req, res) => {
  res.send("Hello, this is the backend server for the Todo List App!");
});

4. 서버 실행 및 테스트

node server.js

서버를 실행한 후 Postman으로 테스트 했습니다.


SQL과 쿼리

데이터베이스 작업에 대한 경험은 Firebase에서 시작되었습니다. Firebase에서도 데이터를 추가하고 조회하는 등의 기능을 실행하기 위해 Firebase에서 제공하는 메서드들이 있었습니다. SQL에서는 이러한 작업을 SQL 쿼리를 사용하여 수행한다고 생각하며, 상호작용하는 데 비슷한 개념으로 접근할 수 있었습니다.

SQL과 쿼리가 뭐지?

  • SQL: 데이터베이스와 상호작용하기 위해 사용되는 언어로, 데이터의 저장, 조회, 수정, 삭제 등의 작업을 수행합니다.
  • 쿼리: SQL 명령어의 일종으로, 데이터베이스에 특정 작업을 요청하는 명령문입니다. 예를 들어, 데이터를 삽입, 삭제, 업데이트하거나 조회하는 명령이 있습니다.

1. 데이터베이스 연결

SQLite3를 사용하여 로컬 파일에 데이터를 저장하도록 설정했습니다. 데이터베이스 파일은 notes.db로 저장되며, 메모를 저장하기 위한 notes 테이블을 생성했습니다.

2. 테이블 생성

notes 테이블을 생성하는 SQL 쿼리를 실행했습니다. 테이블이 이미 존재하지 않으면 새로 생성되며, idcontent 열을 포함하게 합니다.


마무리

간단하게 백엔드 서버를 구축하면서 Node.jsExpress.js, 그리고 SQLite3를 사용하여 RESTful API를 구현해보았습니다. Next.js에서 API 구현 경험이 있어서인지 검색해보고 구현할 만 했습니다. 추가로 백엔드와 협업 시 서버 설정에 대한 CORS 에러 같은 것들을 겪었기 때문에 당황하지 않을 수 있었습니다. Next.js와 Vercel이 참 간편했다는 것을 다시 느꼈습니다!

profile
https://lia-portfolio.vercel.app/

0개의 댓글