참고 자료


Nomad Coders의 Youtube clone 강의를 참고하였습니다.


express 공식 문서
HTTP - wikipedia




1. 서버란?



클라이언트에게 네트워크를 통해 정보나 서비스를 제공한다. 쉽게 말하면 인터넷에 연결된채로 계속 켜져있는 컴퓨터와 같다.
서버는 항상 사람들의 요청에 대기중이며, 사용자의 요청(request)을 듣고(Listening) 응답(response)한다.




2. Express는 무엇인가?



node.js 웹 애플리케이션 프레임워크다.
내장 기능과 모듈이 있어 쉽고 빠른 코드 작성을 도와준다.




3. Express 시작학기



// server.js

// node_modules 폴더에서 express를 불러온다.
import express from "express";

// 임의의 포트 지정
const PORT = 4000;

const app = express();

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

// app.listen(지정 포트, 콜백 함수) - 지정한 포트에서 요청을 기다린다.
app.listen(PORT, handleListening);




4. GET과 POST의 차이



  • HTTP(HyperText Transfer Protocol)란? : 웹상에서 정보를 주고받을 수 있는 프로토콜이다. 즉 사용자와 서버와 소통하는 방법이다.
    가장 오래되고, 처음 시도된 방법이며 클라이언트와 서버 사이의 요청(request)은 웹 브라우저가 만들어준다.


  • HTTP의 method

    • GET: 서버로부터 정보를 조회하기 위해 설계된 메소드이다. 정보를 쿼리 스트링에 담아 전송한다. (ex. 검색기능)

    • POST: 리소스를 생성/변경하기 위해 설계된 메소드이다. 그러므로 클라이언트 측에서 서버로 데이터 전송이 가능하다. 정보를 body에 담아 전송하며 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야한다. (ex. 블로그 글 업로드)




5. Express로 GET requests에 응답하는 법



// server.js

// 요청에 대한 callback 함수를 controller라 한다.
const handleHome = () => console.log("Somebody is trying to go home.");

// root 경로로 요청이 들어오면 콜백 함수(handler)를 실행한다.
app.get("/", handleHome);




6. handler 함수는 req, res가 꼭 필요하다!



  • req: 객체 는 reqHTTP 요청을 나타낸다. 요청 쿼리 문자열, 매개변수, 본문, HTTP 헤더 등에 대한 속성을 가지고 있다.

  • res: Express 앱이 resHTTP 요청을 받을 때 보내는 HTTP 응답을 말한다. res객체의 내장 필드에는 다양한 기능들이 있다.
    ex) res.end(): 접속 종료, res.send(), res.download() 등등


const handleLogin = (req, res) => {
    // req에는 상황에 따라 query등의 정보가 추가된다.
    // res의 내장 함수에는 많은 기능이 있다.
    // ex) res.end(): 접속 종료, res.send(), res.download() 등등
    return res.send("Login page: Response for you~");
};

// 이렇게 쉽게 login 경로(route) 생성이 가능하다.
app.get("/login", handleLogin);