본문 바로가기

Nodejs

(12)
Mongoose (2024-05-10) Mongoose - Node.js와 MongoDBfmf dnlgks ODM(Object Data Mapping) 라이브러리 - JavaScript Object와 MongoDB의 데이터를 Mapping하여 호환성을 만들어내고, 간편한 CRUD를 가능   data > auth.js더보기import Mongoose from 'mongoose';import { useVirtualId } from '../db/database.js';const userSchema = new Mongoose.Schema({ username : {type : String, require: true}, name : {type: String, require: true}, email: {type: String, requir..
MongoDB (2024-05-09) MongoDB - MongoDB NoSQL 데이터베이스로 문서 기반 데이터 저장 방식을 채택한 오픈소스 DBMS - 관계형 데이터베이스와는 달리 스키마가 없으며, BSON(Binary JSON) 형태로 데이터를 저장  - 유연성이 좋고, 대규모 데이터 처리에 용이 (스키마가 없다 -> 테이블 형태가 없다 / 골격이 없다) (데이터의 형태가 제각각일 수 있다) MongoDB Atlas - MongoDB의 관리형 클라우드 데이터베이스 서비스 - MongoDB 데이터베이스를 클라우드에서 호스팅 하고 관리하는 것을 중심으로 하며, 개발자 및 기업이 손쉽게 어플리케이션을 빌드하고 배포할 수 있도록 지원  data > auth.js더보기import MongoDB from 'mongodb';import { getUs..
tweet, auth DB연결 (2024-05-08) (env, socket, orm, branch더보기환경 변수 관리- 로컬에서 개발 또는 서버에 배포할 때 DB연결, 포트 설정, 시크릿 키 등 안전하게 관리하기 위한 환경 변수로 처리- .env라는 파일에 환경 변수를 설정        npm i dotenvHTTP 통신- 요청(request, 클라이언트)과 응답(response, 서버)으로 이루어짐- 클라이언트가 요청을 먼저하고 서버는 수동적으로 응답해주는 구조(반이중통신 구조)웹 소켓(Web Socket)- 브라우저에서 지원하는 소켓통신- 실시간 네트워킹이 보장된다- 전이중통신 구조웹 소켓의 동작 원리 1. 최초 연결  요청 시 클라이언트에서 HTTP를 통해 웹서버에 요청한다=> 핸드쉐이크 Handshake: HTTP통신을 Websoket 프로토콜로 ..
Authentication (2024-05-02) Authentication(인증)더보기1. session & cookie ✔쿠키  - 클라이언트 컴퓨터에 저장되는 작은 데이터 조각 - 서버로 부터 전송되어 클라이언트 웹 브라우저에 저장 - 텍스트 형식으로 주로 사용자 인증, 설정, 장바구니 등에 사용 ✔세션 - 웹 서버 측에서 유지되는 상태 정보 - 사용자에 대한 고유한 세션 ID를 통해 식별 - 서버 메모리 또는 데이터베이스에 저장할 수 있음 2. JWT (JSON Web Token) - 웹 애플리케이션과 서비스 간에 정보를 안전하게 전달하기 위한 인증 및 권한 부여 매커니즘을 구현하는 데 사용되는 표준화된 방법 중 하나 - JSON 포멧을 사용하여 정보를 표현하고 서명 및 암호화를 통해 정보의 무결성을 보장  { Header | Payload | ..
과제 회원가입, 로그인 router, tweet 활용 과제 - router, data, controller에 auth.js 를 추가하고 tweet.js를 참고하여 적용- 회원가입, 로그인(회원정보 확인 - 아이디를 보내면 해당 객체의 정보만 출력) users = [ { id : '1', username : 'apple', password : '1111', name : '김사과', email : 'apple@apple.com', url : 'https://www.logoyogo.com/web/wp-content/uploads/edd/2021/02/logoyogo-1-45.jpg' }, { ... } ..
리팩토링, validation(2024-04-29) 리팩토링- 소프트 웨어 개발 과정에서 코드를 재구성하여 가독성을 높이고 유지보수를 쉽게 만드는 과정 - 코드의 구조를 개선하고 중복을 제거하여 더 나은 설계 패턴을 도입함으로 코드의 품질을 향상 시킴 - 코드의 기능을 변경하지 않으면서 코드를 개선하는 방법더보기router > tweets.jsimport express from 'express';import * as tweetcontroller from '../controller/tweet.js';const router = express.Router();// 해당 아이디에 대한 트윗 가져오기// GET// http://localhost:8080/tweets?username=:usernamerouter.get('/', tweetcontroller.getTw..
params, query 파람스 (Params)목적: 주로 필수적인 데이터를 전달하거나, 특정 자원을 식별하는 데 사용됩니다.사용 예: RESTful API에서 자원의 위치를 명시적으로 지정할 때 사용합니다. 예를 들어, 특정 사용자의 프로필 페이지나 특정 게시글을 조회할 때 사용자 ID나 게시글 ID를 URL 경로에 포함시키는 경우입니다.형태: URL의 일부로 직접 포함되며, /resource/{paramValue} 형식을 취합니다.쿼리 (Query)목적: 선택적인 데이터를 전달하거나, 서버에 특정 작업을 요청할 때 사용합니다. 주로 데이터를 필터링, 정렬하거나, 특정 조건에 따른 데이터 요청 시 사용됩니다.사용 예: 검색 조건, 페이지네이션, 정렬 조건 등이 전달될 때 주로 사용됩니다.형태: URL의 끝부분에 ? 다음에 위치..
route 활용 (tweet 예제) (2024-04-26) tweet 예제더보기app.jsimport express from "express";import morgan from "morgan";import tweetsRouter from './router/tweets.js';const app = express();app.use(express.json());app.use(morgan("dev"));app.use('/tweets', tweetsRouter);app.use((req, res, next) => { res.sendStatus(404)});app.listen(8080); router/tweets.jsimport express from 'express';const router = express.Router();let tweets = [ { ..