node.js (1)

dana·2022년 1월 17일
0

backend

목록 보기
5/7
post-thumbnail

본 게시글은 멋쟁이사자처럼의 node.js 강의를 듣고 작성되었습니다.

node.js

server

서버란 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 혹은 프로그램을 의미한다. 즉, 클라이언트의 요청에 대한 응답을 하는 역할이다.

const http = require("http")
http.createServer((req, res) 
	=> writeHead(200, {
		"content-type" : "text/html"
        });
	res.end("<p> Hello World</p>") 
    }).listen(3000, () => {
    	console.log("3000번 포트")});

express

설치 방법

yarn으로 설치를 시도했으나, path에 이상이 있는지 설치는 되는데 zsh: command not found: express 가 계속 떠서 결국엔 npm으로 설치

npm install express express-generator nodemon을 입력해 설치해준다.
express --ejs 프로젝트명으로 파일을 설취한 뒤,
생성된 파일로 경로를 이동한다.

이동된 경로에서 npm install로 의존성을 모두 설치해 준 뒤, npm start를 입력하면 서버가 가동되는 것을 확인할 수 있다. 이 때 package.json에서 start 내부의 명령어를 npm에서 nodemon로 변경해주면 코드가 바뀔 때마다 서버를 재가동하지 않아도 자동으로 갱신된다.

express

기존의 api 연결은 다음과 같은 과정을 거친다.
1. req.url 파싱
2. req.method 확인
3. 쿼리문 파싱

반면 express를 사용하면 보다 쉽게 api를 연결할 수 있다.
1. req.get('경로')
2. req.query로 확인

express-generator

express의 기본 구조를 만들어준다.
express --ejs 프로젝트명으로 프로젝트를 생성할 수 있다.
프로젝트를 생성하면 다음과 같은 폴더 구조가 나타나게 된다.

bin/www

서버를 실행하는 파일로, 포트 번호 지정이 가능하다.

public

image, js, css 등 리소스를 저장하는 공간

route

페이지 라우팅과 관련된 파일을 저장한다. 실제 서버로직을 이곳에 작성하게 된다.

view

Html 템플릿 파일이 저장되어 있다.
html 템플릿 파일 안에는 <%= %>문법 안에 Js 코드를 작성할 수 있다 (=

app.js

핵심적인 서버 역할을 하며, 라우팅의 시작점이다.
라우팅 : 요청에 따라 처리해주는 것

package.json

의존성 관리 및 버전 관리

HTTP method

http method : 서버에 요청을 보내는 방법을 의미

method역할
GET요청받은 정보를 검색(read)하여 응답
POST요청된 자원을 생성(create)
PUT요청된 자원을 수정(update)
DELETE요청된 자원을 삭제(delete)

GET

데이터를 받아온다.

var express = require("express")
var router = express.Router()

//GET method
router.get("/read", (req, res) => {
  res.status(200).json({
    message: "read success",
  })
})


module.exports = router

POST

데이터를 생성

var express = require("express")
var router = express.Router()

//POST method
router.post("/create", (req, res) => {
  const data = req.body.data
  arr.push(data)
  res.status(200).json({
    message: "create success",
    result: arr,
  })
})

PUT

//PUT method
// update/0 -> 0번째인 데이터를 변경
router.put("/update/:id", (req, res) => {
  const { id } = req.params
  const { data } = req.body
  arr[id] = data
  res.status(200).json({
    message: "update success",
    result: arr,
  })
})

DELETE

//DELETE method
router.delete("/delete/:id", (req, res) => {
  const { id } = req.params
  arr.splice(id, 1)
  res.status(200).json({
    message: "delete success",
    result: arr,
  })
})

middleware

모든 method 실행시, 실행되도록 하는 함수들

//어떤 요청이 들어와도 해당 미들웨어 요청을 한번씩은 실행
app.use((req, res, next) => {
  console.log("middleware!!")
  next()
})

보통 module이라는 폴더를 따로 생성해 미들웨어 함수들을 저장해준다. 이렇게 저장한 함수들을 index.js에 불러와서

const logincheck = require("../module/loginCheck")

var express = require("express")
var router = express.Router()

router.get("/", logincheck, (req, res) => {
  res.status(200).json({
    message: "login success!!",
  })
})
module.exports = router

다음과 같이 함수에 넣어두면 get 요청시 미들웨어 함수가 실행된다.

profile
PRE-FE에서 PRO-FE로🚀🪐!

0개의 댓글