node.js (1)
본 게시글은 멋쟁이사자처럼의 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으로 설치
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 요청시 미들웨어 함수가 실행된다.
Author And Source
이 문제에 관하여(node.js (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@deli-ght/node.js-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)