반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

taenyLog

NodeJs | Express로 서버제작 본문

Web

NodeJs | Express로 서버제작

taenyLog 2023. 6. 21. 07:49
반응형

Node 사용하여 서버 구축할 때 사용

 

Express 개요

- Express는 요청을 받아들일 서버 구축을 돕고 들어오는 요청을 파싱한다(HTTP요청이 텍스트 정보이기 때문이다 JS가 아니므로 Express가 돕는다. )

- 응답을 만드는 것도 도와줌. 상태코드 설정 , 헤더와 같은 콘텐츠를 어떻게 응답할지 설정

 

 제어와 제어의 역전

제어 

라이브러리는 언제든지 코드에 결합 가능

프레임워크 - 제어의 역전

애플리케이션의 프레임워크에서 제어의 흐름을 역전시키기때문에 프레임워크의 작동원리에 따라 코드를 작성한다.

 

Express 앱

$ npm i express  

express다운

 

$ npm i express --save 

구버전 NPM에서 패키지를  package.json에 저장시 --save붙여준다.

https://expressjs.com/

 

Express - Node.js web application framework

Fast, unopinionated, minimalist web framework for Node.js $ npm install express --save

expressjs.com

 

 

 

요청 및 응답 객체

1. 두 개의 매개변수에 접근

 1) 들어오는 요청 객체

 2) 응답 객체

 

//npm 사용
const express = require("express");
const app = express(); //app 변수에 저장

app.use((req, res) => {
    console.log("WE GOT NEW REQUEST!!")
   // console.dir(req)
    /* Express가 자동으로 HTTP요청 정보를 파싱해 JavaScript객체를 만들고
 그것을 콜백의 첫 번째 인수로 전달한다.*/
  //  res.send("HELLO WE GOT YOUR REQUEST")
   // res.send({color:'red'}) //js담음
    res.send('<h1>THIS IS MYE WEB</h1>') //html담음

})


//app에서 listen 메서드 사옹해 서버 실행
app.listen(8080,()=>{
    console.log("PORT ON 8080!")
})

 

 

Express 라우팅 기초

라우팅 : 요청과 요청된 경로를 가져와 응답에 맞춰 놓는다.

app.get('/',(req,res)=>{
    res.send("HOMEPAGEE")
})

app.get('/cat',(req,res)=>{
    /* req는 들어온 HTTP 요청을 기반으로 Express가 생성한 객체 
    res도 Express가 생성한 객체로 둘 다 콜백에 전달됨*/
    res.send('MEOWWWWW!!!')
})
app.post('/cat',(req,res)=>{
    res.send('POST CAT!!!')
})
app.get('/dog',(req,res)=>{
    res.send('OFFF!!!')
})
app.get('*',(req,res)=>{
   // 라우터가 순서대로 매치하기때문에 이 코드가 맨위로오면 계속 I DONT KNOW THAT PATH!!!'이 뜰것임 
    res.send('I DONT KNOW THAT PATH!!!')
})

//app에서 listen 메서드 사옹해 서버 실행
app.listen(8080,()=>{
    console.log("PORT ON 8080!")
})

 

Express 경로 매개 변수

app.get('/r/:subreddit',(req,res)=>{
    const {subreddit} = req.params;
    res.send(`<h1>Browsing the ${subreddit}</h1>`)
})

app.get('/r/:subreddit/:postId',(req,res)=>{
    const {subreddit,postId} = req.params;
    res.send(`<h1>${postId} the ${subreddit}</h1>`);

})

라우트에 콜론 뒤에 경로를 정의하는 문자열을 넣고 키-값 쌍이 있는 req.params를 사용하면 된다.

 

 

쿼리 문자열 작업

쿼리란 URL의 일부로 물음표 뒤에 위치하며 쿼리 문자열의 한 부분으로써 키-값쌍으로 정보 받는다

app.get('/search',(req,res)=>{
    const { q } = req.query;
    res.send(`<h1>Search result for: ${q} </h1>`)
})

app.get('/search',(req,res)=>{
    const { q } = req.query;
    if(!q){
        res.send("NOTHING FOUND ")
    }
    res.send(`<h1>Search result for: ${q} </h1>`)
})

 

Nodemon 사용한 자동 재시작

npm i -g nodemon  우선 npm 설치

폴더의 모든것을 관찰하고 있음을 알려줌

 

index.js파일에서 HOMEPAGE에서 WELCOME HOMEPAGE로 바꾸고 저장했더니 nodemon이 이를 감지하고 재시작한다. 

반응형

'Web' 카테고리의 다른 글

Bootstrap 사용시 jquery 오류  (0) 2023.06.22
NodeJS | 템플레이팅으로 동적 HTML 구성  (2) 2023.06.22
NodeJS | 언어 맞추기 프로젝트  (0) 2023.06.21
NodeJS | process.argv[2];  (0) 2023.06.21
Node Js | Module / NPM  (0) 2023.06.21