엘리스 SW 엔지니어 트랙

[엘리스 SW 엔지니어 트랙 2기 / TIL] Week 06 - Express, API

wookhyung 2022. 5. 18. 23:05
728x90

1. 오늘 공부한 내용  📝

미들웨어(Middleware)란?

  • 요청(Request)과 응답(Response) 중간에 처리되는 함수들
    • 요청이 들어오는 매번 실행 될 수 있음
    • 특정 요청에만 처리되도록 할 수 있음
    • 사실상 express에 들어오는 모든 요청이 미들웨어로 처리된다고 할 수 있음
    const express = require('express')
    const router = express.Router()
    const app = express()
    const port = 3000
    
    router.get('/users/:id', (req, res) => {
    	const id = req.params.id;
    	res.send(`User Id : ${id}`)
    })
    app.use("/users", router)
    
    • app.use()를 통해서 미들웨어 연결
    • 파라미터를 통해서 특정 URI로 들어온 경우에만 연결할 수 있음
    • 경로 파라미터가 없다면 모든 요청에 적용
    app.use('/users/:id', (req, res, next) => {
    	const id = req.params.id;
    	console.log(`입력된 id : ${id}`);
    	next(); // 다음 미들웨어로 이동
    });
    
    app.get('/users/:id', (req, res) => {
    	const id = req.params.id;
    	res.send(`User Id : ${id}`)
    })
    
    const express = require("express);
    const cors = require("cors");
    const bodyParser = require("body-parser");
    const app = express();
    
    app.use(cors());
    // app.use(bodyParser.json));
    app.use(express.json()); // 4.16.0 버전부터 body-parser를 포함함
    

참고) Postman

  • GET/POST/PUT/DELETE 같은 호출을 편하게 하기 위한 도구
    • JSON으로 변수를 담거나 하기 편함
    • 서버를 구성하고, 실제 잘 동작하는지 확인하는 용도

 

데이터베이스 개념

  • 데이터를 통합 관리하기 위한 개념 (데이터를 모아둔 창고)
    • 등산할때 쓰이는 베이스캠프에서 이름 유래
    • DBMS (DataBase Management System)
      • 메모리에 데이터를 올려두는 것이 아니라 파일로 저장
  • NoSQL 데이터베이스의 대표 주자
  • 유연하고, JSON과 유사한 문서에 데이터를 저장
  • 기본적으로 분산 데이터베이스
    • NoSQL은 스키마가 없는 것 (=데이터를 유연하게 저장할 수 있음)
    • RDB는 정해진 스키마에 따라 명확한 데이터 구조를 보장
    • RDB는 테이블 간의 관계를 설정할 수 있음
    • NoSQL은 테이블 간의 JOIN이 매우 힘듦
    • NoSQL은 서버 scale-up이 간단함 (기본적으로 분산 구조)매우 빠른 처리 속도NoSQL vs RDB?


Mongoose?

    • Node.js와 MongoDB를 위한 ODM(Object Document Mapping) 라이브러리
      • 손쉽게 Node.js에서 MongoDB를 사용할 수 있게 해줌
      • ODM : 객체와 문서를 1:1 매칭
      • DB를 읽어와서 객체화 시켜줌

 

2. 어려웠던 내용  🤯

express는 이전에도 학습하긴 했지만 다시 들으니까 또 새롭다... mongoDB 연결도 잘 안되는거 같다 😢

3. 궁금한 내용 / 부족했던 내용  🧐

express의 전체적인 흐름? 모듈, 미들웨어 개념 + mongoDB(NoSQL)

4. 느낀 점 🤔

백엔드 수업이 계속되고 있는데 난이도가 있고 실시간 강의라서 흐름을 놓치면 따라가기 힘들다.

미리 다음 날 강의를 듣는 것도 괜찮을 것 같다.