전체 글

전체 글

    Node.js(express) 프로젝트 설계하기

    Node.js 프로젝트 구조를 설계할때 도움이 됐던 글들을 정리하고, 나는 어떻게 처리했는데 공유한다. 😄 best practice를 알아보기 위해 많은 글들을 찾아봤고 그 결과, 좋은 글의 내용을 프로젝트에 녹여낸 것 같아서 뿌듯하다. 코드는 여기서 확인할 수 있고 도움이 됐던 글들은 끝에서 볼 수 있다. 그럼 시작! 폴더 구조 3 계층 설계 관심사 분리 원칙을 위해 API Route와 비즈니스 로직을 분리하고, 비즈니스 로직과 Data Access Layer를 분리했다. Express controller에 비즈니스 로직을 작성해도 되지만 결국 스파게티 소스가 될 수 밖에 없다. 예를 들어 신규 회원 등록 API를 만드는 경우, 처음에는 아래처럼 사용자 데이터를 추가하는 코드만 필요하지만 await U..

    첫 사이드 프로젝트 후기

    첫 사이드 프로젝트 후기 ✌️ 만들어보면서 배우는 게 가장 재밌고 빠르게 배울 수 있는 방법이라고 생각해서 사이드 프로젝트를 진행했었는데, 정작 프로젝트를 마치고 보니 기능을 구현하는 데에만 급급했던 것 같다. CORS 이슈를 해결하기 위해 어떤 의미인지도 모르는 옵션을 넣고, 무슨 뜻인지도 모르는 Nginx 설정을 무작정 넣고.. 일과 병행해서 진행하다 보니 여유로울수는 없었지만 그래도 배운 내용들을 정리하면서 진행했으면 좋았을 것 같다. 다음에는 꼭 이렇게 하기로! 조금 늦은 느낌이지만 Hola를 진행하면서 들었던 생각들, 배운 내용들을 정리해보려 한다. 아래와 같은 목차로 진행할 예정이다. 사이드 프로젝트 후기(이글!) Node.js 세팅 및 프로젝트 구조 Database 선택. RDBMS or N..

    첫 사이드 프로젝트 오픈!! - Hola

    Hola! Hola는 개발자들을 위한 플랫폼으로 혼자 만드는 게시판과 투두 리스트가 지겨운, 함께 사이드 프로젝트를 진행할 팀원을 구하느라 지친 개발자들을 위한 서비스다. 기존에 느껴졌던 불편한 방식들을 개선하고, 원하는 기술 스택을 선택해서 팀원을 쉽게, 빠르게 구할 수 있도록 서비스를 구성했다. 이름이 Hola!인 이유는 서비스 이름을 고민하다가 우연히 들었던 자우림의 Hola!라는 노래가 너무 좋았기 때문이다. Hola의 뜻도 이때 처음 알았다😅 홀라가 아니라 올라입니다! Hola 서비스 시작 ⭐️ 열심히 사이드 프로젝트로 진행했던 Hola!가 드디어 오픈을 했다. 오픈하기 전 Hola가 사람들이 필요로 하는 서비스 일지, 사용자가 없으면 어떡하지 걱정이 많았는데 예상했던 것보다 반응이 좋아 기분이..

    [Node.js] __dirname is not defined 에러

    참조 사이트 : https://github.com/nodejs/help/issues/2907 Express에서 CommonJS 모듈을 사용하다가 ES 모듈을 사용하게 되었을 경우("type": "module" in package.json) ReferenceError: __dirname is not defined 에러가 발생하게 됩니다. CommonJS에서 사용하던 __dirname 변수가 ES 모듈에서는 없기 때문에 발생하는 에러로 아래와 같이 사용하면 됩니다. import path from 'path'; const __dirname = path.resolve(); CommonJS 모듈 const express = require("express"); ES 모듈 import express from 'exp..

    REST API란, RESTful API 설계 가이드

    사이드 프로젝트에서 REST API(HTTP API)를 설계할때 도움이 됐던 내용들을 정리해보았습니다. REST는 개념과 원리는 정해져있지만 구체적인 공식 가이드 없기 때문에 많은 사이트를 참조했고, 도움이 됐던 글들은 아래 참조 사이트에서 확인하실 수 있습니다. 이상학님의 개발 블로그를 가장 많이 참고하였습니다. 💡 참조 사이트 REST란? REST API란? RESTful이란? RESTful API란? REST 아키텍처를 훌륭하게 적용하기 위한 몇가지 디자인 팁 REST API 제대로 알고 사용하자 RESTful API 설계 REST API 관점에서 바라보는 HTTP 상태 코드 REST API 이해와 설계 1. REST API란? 1.1 REST API의 탄생 REST는 Representational..

    [Node.js] n으로 쉽게 Node 버전변경하기(커맨드 2번으로 끝!)

    2021.11.25 수정 n을 이용하여 nvm보다 쉽게 Node.js 버전을 변경할 수 있습니다. 명령어 2번이면 Node 버전을 변경할 수 있습니다. 👍 npm i -g n // global로 n 설치 n lts // lts 버전으로 Node.js 버전 변경 n -h // 상세한 n 설명 NVM이란? 노드 버전을 업데이트하기 위한 패키지로, 쉽게 Node.js 버전을 관리할 수 있습니다. nvm을 설치해놓으면 명령어 하나로 노드 버전을 변경할 수 있습니다. nvm use 14.15.4 NVM 설치 윈도우를 기준으로 아래 사이트에 접속해서 nvm-setup.zip 파일을 내려받은 후, 압축 파일을 해제하고 npm-setup.exe. 파일을 실행하여 설치합니다. 링크 : github.com/coreybut..

    [JWT] 서버 인증 이해하기 - JWT란, 서버 인증 / 토큰 인증

    인증에 중요성에 대해서는 누구나 다 잘 알고 있기 때문에 설명할 필요가 없다. JWT(Json Web Token)을 이용하여 인증을 처리하는 것이 좋은 방법이라고 하는데 JWT는 무엇인지, 다른 방법에는 어떤 것들이 있는지, 각각의 장단점은 어떤지 정리해보자. 인증(Authentication) vs 인가(Authorization) 정리하기에 앞서 용어에 대해 분명히 해두자. 발음은 잘 모르겠다. 인증 : 클라이언트가 자신이 주장하는 사용자인지 확인하는 과정 인가 : 클라이언트의 요청이 허가된 작업인지를 확인하는 과정. 즉 권한 부여 A. 서버 기반 인증 시스템(Session / Cookie) 서버 기반 인증 시스템은 로그인 시 세션 ID를 클라이언트에게 발급해주고 클라이언트는 요청 시마다 세션 ID가 담..

    [Spring] Servlet, DispatcherServlet 이란

    여기서 Servlet, DispatcherServlet이 등장한다. Servlet의 정의를 찾아보니 "웹프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술" 이라고 한다. 웹에서 클라이언트의 요청을 처리해주고 다시 전송하는건 WAS 아닌가? 지금까지 단순히 웹 서버(Apache)는 정적 + WAS(Tomcat)는 동적이라고만 생각하고 WAS가 어떻게 구성되어있는 지 몰랐다. 또 찾아보니 HTTP Server + Servlet Container = WAS(Web Application Server) 라고 하는데 Container도 뭔지 몰랐다. 우선 참조 사이트에서 "스프링이 도대체 뭐란 말인가?"를 읽고오자. 간단..