Express로 서버 만들기

Big Jay·2022년 8월 23일
0

nodejs

목록 보기
2/4
post-thumbnail
  • node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크다.
  • 자유롭게 활용할 수 있는 HTTP 유틸리티 메소드 및 미들웨어를 통해 쉽고 빠르게 강력한 API를 작성할 수 있다.
  • 템플릿에 데이터를 넣어 응답(response)을 만들기 위해 view의 렌더링 엔진과 결합(integrate)한다.
  • 접속을 위한 포트나 응답 렌더링을 위한 템플릿 위치같은 공통 웹 어플리케이션 세팅을 한다.
  • 핸들링 파이프라인(request handling pipeline) 중 필요한 곳에 추가적인 미들웨어 처리 요청을 추가한다.

시작하기

npm i express
//server.js 파일 생성

// express 모듈 연결
const express = require('express')
// epxress 함수를 변수에 할당
const app = express()
// 내가 사용할 port 번호
const port = 3000

// '/'경로 생성
app.get('/', (req, res) => {
  // 사용자가 지정된 경로로 접속시 'Hello World!'를 출력한다.
  res.send('Hello World!')
})

// 지정된 port로 서버 연결을 시도한다.
app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

위와 같이 작성한 후 터미널에서 node sever.js로 실행하면 웹서버가 실행한다.

기본 라우팅

라우팅은 URI(또는 경로)와 HTTP 요청 메소드인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 것을 말한다.

// 기본 라우트 구조
app.method(path, handler)
  • method는 HTTP 요청 메소드 입니다.
  • path는 URI(경로)입니다.
  • handler는 사용자가 해당 라우트와 일치 했을때 실행하는 함수이며, 인자로는 req, res, next가 있다.(next는 미들웨어로 사용할 때 쓴다.)
// localhost:3000/login으로 접속할 때 응답
app.get("/login", (req, res) => {
	res.send("login 페이지")
})
// localhost:3000/login에서 post 요청에 대한 응답
app.post("/login", (req, res) => {
	res.send("login 페이지에서 post 요청을 받았다.")
})

// 만약 하나의 uri에 get과 post를 다 쓴다면
app.route("/login").get((req,res)=>{}).post((req,res)=>{})

미들웨어(Middleware)

미들웨어 함수는 요청 오브젝트(req), 응답 오브젝트(res), 그리고 애플리케이션의 요청-응답 주기 중 그 다음의 미들웨어 함수 대한 엑세스 권한을 갖는 함수다. 그 다음의 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시된다.

미들웨어 함수는 다음과 같은 테스크를 수행할 수 있다.

  • 모든 코드를 실행.
  • 요청 및 응답 오브젝트에 대한 변경을 실행
  • 요청-응답 주기를 종료.

- 이미지: express 공식 페이지


const middleware = (req, res, next) => {
  console.log("미들웨어 작동")
  next(); // 미들웨어는 항상 마지막에 next()가 있어야한다.
}

// 모든 router에 미들웨어를 적용할 경우
app.use(middleware);

// 특정 route에만 적용할 경우
app.get("/login", middleware, (req, res) => {
	res.send("login 페이지")
})

참조

profile
안녕하세요.

0개의 댓글