상세 컨텐츠

본문 제목

ch3. express intro

노마드/유튜브

by hippo0207 2022. 8. 9. 22:17

본문

0. First Server 만들기

  • server란?
    • 항상 켜있는 , 인터넷에 연결된 컴퓨터
  • express() 로 애플리케이션 생성
  • app이 무엇을 listening해야하는 건가?
    • request >> 서버가 listening 하고있음
    • express().listen(port번호, callback함수) 
    • callback함수 : 서버가 시작할때 작동하는 함수
    • 어떤 포트를 리스닝할지 알려줘야함
import express from "express";

const app = express(); // << express 어플생성
const PORT = 4000;

const handleListening = () =>
  console.log(`🎈Server Listening on port http://localhost:${PORT}`);

app.listen(PORT, handleListening);

 

  • 2. 서버에 가는 방법
    • 보통은 localhost로 접속가능
    • 서버종료 : ctrl + c

3.1~3.2 GET requests

  • Cannot GET / 
    • / = root page
    • GET : HTTP(서버끼리 소통하는 방법) method 
    • get = bring me the page
    • express() 로 어플 만든 후에 작업해야함 (맨위엔 이거)
    • 샌드위치처럼. 맨밑엔 app.listen(PORT, handleListening); 
    •  
const app = express(); // << express 어플생성
-----------
const handleHome = () => console.log("Somebody is trying to go home");

// 누가 root page로 get request를 보낸다면, 함수를 작동시킴
app.get("/", handleHome);
---------------
const handleListening = () =>~~~

3.3 Responses

  • get request작동시 > 작동시키는 함수로 express가 req, res를 args로 보내줌
  • res.end() >> request 강제종료시키기
  • res.send()

const handleHome = (req, res) => {
  //console.log(req);
  //return res.end();  // request를 종료시킨거임
  return res.send("i love you");
};

const handleLogin = (req, res) => {
  return res.send("login here");
};

// 누가 root page로 get request를 보낸다면, 함수를 작동시킴
app.get("/", handleHome);
app.get("/login", handleLogin);

3.5 middlewares = handler = controller

  • 중간에 있는 소프트웨어
  • 브라우저가 뭔가 request하면 서버가 응답()함 >> 그사이에 있음
  • 모든 middleware = handler , handler = middleware
  • handler == controller
  • controller엔 3개 args가 있다 (request, response, next)
  • next() >> 다음 함수를 호출함
  • request에 응답하지 않음. request를 지속시켜주는 것. 응답하는 함수가 아니라 다음함수로 넘기는 함수임
const gossipMiddleware = (req, res, next) => {
  console.log(" i'm in the middle!");
  next();
};

const handleHome = (req, res) => {
  return res.send("i love you");
};

app.get("/", gossipMiddleware, handleHome);

app.use() >> global middleware 사용하게 함

  • 모든 route에서 이걸 사용함
  • app.use() 다음에 app.get()이 있어야 get전에 사용됨 (top to bottom)
  • global middleware에서 return하면 다음꺼연결안되고 끝남. next()해야 다음함수 실행됨
~~~
const logger = (req, res, next) => {
  console.log(`i'm in the middle! ${req.method} ${req.url}`);
  next();    <<    <<
};

const privateMiddleware = (req, res, next) => {
  const url = req.url;
  if (url === "/protected") {
    return res.send("<h1>Not Allowed</h1>");    <<    <<
  }
  console.log("Allowed, you may continue");
  next();    <<    <<
};

const handleHome = (req, res, next) => {
  return res.send("i love you");
};

const handleProtected = (req, res) => {
  return res.send("Welcome to the private rounge");
};

app.use(logger);    <<    <<    <<    <<
app.use(privateMiddleware);    <<    <<
app.get("/", handleHome);    <<    <<
app.get("/protected", handleProtected);    <<
~~~

3.11 External Middlewares

  • Morgan : 미들웨어중 하나
  • npm i morgan
  • 함수호출시 설정한대로 미들웨어를 리턴해줌
  • 다섯가지 옵션
  • morgan이 기존 middleware보다 좀 더 정교함
  • get, path, status code 정보를 모두 가지고 있음

 

 

 

morgan

HTTP request logger middleware for node.js. Latest version: 1.10.0, last published: 2 years ago. Start using morgan in your project by running `npm i morgan`. There are 7937 other projects in the npm registry using morgan.

www.npmjs.com

import morgan from "morgan";

const logger = morgan("dev");

app.use(logger);
// GET / 200 3.833 ms - 5
  • dev 말고 다른거하면 다른거보여줌

'노마드 > 유튜브' 카테고리의 다른 글

ch6. mongoDB & Mongoose  (0) 2022.08.16
ch5.7~ conditionals, iteration, mixins  (0) 2022.08.16
ch5. Templates  (0) 2022.08.14
ch4. Routers  (0) 2022.08.11
1. intro & 2. SET UP  (0) 2022.08.08

관련글 더보기

댓글 영역