1. 인증과 인가의 차이1.1 인증(Authentication)인증은 사용자가 누구인지 확인하는 과정입니다. "너는 누구니?"라는 질문에 답합니다.인증 방법:- 아이디/비밀번호- 소셜 로그인 (Google, GitHub 등)- 생체 인증- 인증서- OTP (일회용 비밀번호)1.2 인가(Authorization)인가는 인증된 사용자가 특정 리소스에 접근할 권한이 있는지 확인하는 과정입니다. "너는 이걸 할 수 있니?"라는 질문에 답합니다.인가 예시:- 관리자만 사용자 삭제 가능- 작성자만 글 수정 가능- 유료 회원만 프리미엄 콘텐츠 접근 가능2. 기본 인증 구현2.1 비밀번호 해싱npm install bcryptconst bcrypt = require('bcrypt');// 비밀번호 해싱async func..
전체 글
운동을 좋아하는 8년차 웹 개발자 입니다.1. 웹소켓이란웹소켓은 클라이언트와 서버 간의 양방향 실시간 통신을 가능하게 하는 프로토콜입니다. HTTP와 달리 연결이 유지되며, 서버에서 클라이언트로 데이터를 푸시할 수 있습니다.1.1 HTTP vs WebSocketHTTP:클라이언트 → 요청 → 서버클라이언트 ← 응답 ← 서버(연결 종료)WebSocket:클라이언트 ←→ 양방향 통신 ←→ 서버(연결 유지)1.2 웹소켓 사용 사례실시간 채팅실시간 알림주식/암호화폐 가격 업데이트멀티플레이어 게임협업 도구 (실시간 문서 편집)2. ws 라이브러리Node.js에서 가장 많이 사용되는 WebSocket 라이브러리입니다.npm install ws2.1 기본 서버const WebSocket = require('ws');const wss = new WebSock..
1. GraphQL이란GraphQL은 Facebook에서 개발한 API 쿼리 언어입니다. REST와 달리 클라이언트가 필요한 데이터만 정확히 요청할 수 있으며, 단일 엔드포인트(/graphql)를 통해 모든 데이터에 접근합니다.1.1 GraphQL vs RESTREST:GET /users/1GET /users/1/postsGET /posts/1/comments→ 여러 번의 요청, 오버페칭/언더페칭 문제GraphQL:POST /graphqlquery { user(id: 1) { name posts { title comments { content } } }}→ 단일 요청으로 필요한 데이터만 조회2. 프로젝트 설정npm install express @..
1. REST API란REST(Representational State Transfer)는 웹 서비스를 설계하기 위한 아키텍처 스타일입니다. HTTP 메서드(GET, POST, PUT, DELETE)를 사용하여 리소스를 조작하며, 상태를 저장하지 않는(Stateless) 특성을 가집니다.1.1 REST 설계 원칙1. 리소스 기반 URL 설계 GET /users - 사용자 목록 조회 GET /users/1 - 특정 사용자 조회 POST /users - 사용자 생성 PUT /users/1 - 사용자 전체 수정 PATCH /users/1 - 사용자 부분 수정 DELETE /users/1 - 사용자 삭제2. ..
1. 서버 사이드 렌더링이란서버 사이드 렌더링(SSR)은 웹 페이지를 서버에서 HTML로 완전히 렌더링한 후 클라이언트에 전송하는 방식입니다. 초기 로딩 속도가 빠르고 SEO에 유리합니다.1.1 CSR vs SSRCSR (Client-Side Rendering):서버 → 빈 HTML + JS → 클라이언트에서 렌더링SSR (Server-Side Rendering):서버에서 렌더링 → 완성된 HTML → 클라이언트 (하이드레이션)1.2 SSR의 장단점장점:SEO 최적화 (검색 엔진이 콘텐츠 크롤링 가능)빠른 First Contentful Paint (FCP)소셜 미디어 미리보기 지원단점:서버 부하 증가TTFB(Time To First Byte) 증가복잡한 상태 관리2. 기본 SSR 구현2.1 Express..
1. Fastify란Fastify는 Node.js를 위한 고성능 웹 프레임워크입니다. Express보다 빠르며, 스키마 기반 검증, 플러그인 아키텍처, 내장 로깅을 제공합니다. JSON 직렬화가 최적화되어 있어 API 서버에 적합합니다.npm install fastifyconst fastify = require('fastify')({ logger: true });fastify.get('/', async (request, reply) => { return { hello: 'world' };});fastify.listen({ port: 3000 }, (err) => { if (err) { fastify.log.error(err); process.exit(1); }});2. 라우팅2.1 기본 ..
1. NestJS란NestJS는 TypeScript로 작성된 프로그레시브 Node.js 프레임워크입니다. Angular에서 영감을 받은 아키텍처로, 데코레이터, 의존성 주입, 모듈 시스템을 사용합니다. Express 또는 Fastify를 기반으로 동작합니다.npm install -g @nestjs/clinest new my-project2. 기본 구조2.1 모듈 (Module)// app.module.tsimport { Module } from '@nestjs/common';import { UsersModule } from './users/users.module';import { PostsModule } from './posts/posts.module';@Module({ imports: [UsersMo..
1. Hapi.js란Hapi.js는 Walmart에서 개발한 엔터프라이즈급 웹 프레임워크입니다. 설정 기반(configuration-centric) 접근 방식을 사용하며, 입력 검증, 인증, 캐싱 등의 기능이 내장되어 있습니다.npm install @hapi/hapiconst Hapi = require('@hapi/hapi');const init = async () => { const server = Hapi.server({ port: 3000, host: 'localhost' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello Hapi!'; } }); ..
1. Express.js란Express.js는 Node.js를 위한 가장 인기 있는 웹 프레임워크입니다. 미니멀하고 유연한 설계로 웹 애플리케이션과 API를 빠르게 구축할 수 있습니다.npm install expressconst express = require('express');const app = express();app.get('/', (req, res) => { res.send('Hello World!');});app.listen(3000, () => { console.log('서버 실행 중: http://localhost:3000');});2. 라우팅2.1 기본 라우팅const express = require('express');const app = express();// HTTP 메서드별 ..
1. HTTP 클라이언트란Node.js에서 HTTP 클라이언트는 외부 API를 호출하거나 웹 페이지를 가져오는 데 사용됩니다. 내장 http/https 모듈을 사용하거나, axios, node-fetch 같은 라이브러리를 사용할 수 있습니다.2. 내장 http/https 모듈2.1 http.get - 간단한 GET 요청const https = require('https');https.get('https://api.github.com/users/octocat', { headers: { 'User-Agent': 'Node.js' }}, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', ()..
1. Koa.js란Koa.js는 Express.js 팀이 만든 차세대 웹 프레임워크입니다. async/await을 기본으로 사용하며, 더 작고 표현력 있는 미들웨어 구조를 제공합니다. Express보다 가벼우며 내장 기능이 적어 필요한 것만 선택적으로 추가합니다.npm install koaconst Koa = require('koa');const app = new Koa();app.use(async (ctx) => { ctx.body = 'Hello Koa!';});app.listen(3000);console.log('서버 실행 중: http://localhost:3000');2. 컨텍스트(Context)Koa는 요청과 응답을 하나의 ctx 객체로 캡슐화합니다.2.1 ctx 객체const Koa = r..
1. HTTP 모듈 소개Node.js의 http 모듈은 HTTP 서버와 클라이언트를 생성하기 위한 내장 모듈입니다. 별도의 패키지 설치 없이 웹 서버를 구축할 수 있습니다.const http = require('http');const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello, World!');});server.listen(3000, () => { console.log('서버가 http://localhost:3000 에서 실행 중');});2. 서버 생성 방법2.1 createServer 사용const http = require('http');..
