express.module_1

BABY CAT·2022년 10월 1일
0

node.js

목록 보기
14/18

1. header

//request 헤더 값읽기
app.get("/",(req,res)=>{
   const agent2 = res.header("user-Agent")
   const host2= res.header("host")
   res.send(`user-agent2값: ${agent2}  <br> 호스트 ${host2}`); 
});

//response header의 값을 설정
// http://localhost:3000/set/key/value 로 진입
app.get("/set/:key/:value", (req,res)=>{
   const key = req.params.key;
   const value = req.params.value;
   res.set(key,value); //셋에의해 key:value묶임 f12 네트워크 헤더에
   res.send(`<h3>key=${key} value=${value}</h3>`)
})

2. mime

마임 타입이란 : 

MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려주기
위한 메커니즘. 

웹에서 파일의 확장자는 별 의미가 없다. 그러므로, 각 문서와 함께 올바른 MIME 타입을 
전송하도록, 서버가 정확히 설정하는 것이 중요하다. 

브라우저들은 리소스를 내려받았을 때 해야 할 기본 동작이 무엇인지를 결정하기 위해 
MIME 타입을 사용.

데이터의 타입을 말한다고 보면 된다.
app.get("/image", (req,res)=>{
   fs.readFile("public/고양이.jpg" ,(err,image)=>{        
      //    "public/고양이.jpg"  이랑 "./public/고양이.jpg" 은 가능 
      //    "/public/고양이.jpg"  은 에러  
      res.type("image/jpg");    // image/jpg 이게 마임타입 mime type
      res.send(image);
   });
});

app.get("/audio", (req,res)=>{
   fs.readFile("public/mp3_sample.mp3" ,(err,audio)=>{
      res.type("audio/mp3");    // image/jpg 이게 마임타입 mime type
      res.send(audio); //에러
   });

});

app.get("/video", (req,res)=>{
   fs.readFile("public/mp4_sample.mp4" ,(err,video)=>{
      res.type("video/mp4");    // image/jpg 이게 마임타입 mime type
      res.send(video); //에러
   });
});

3. static

스택틱폴더경로설정 : 
	html에서 경로를 지정할 때 스택틱경로부터 시작할 수 있다. (js파일은 무관)
스택틱경로 선언하기 : 

const express = require("express"); //express 프레임워크 선언 익스프레스속에 모듈 많음
const app = express();
app.use(express.static(__dirname + "/public"));
	__dirname으로 js파일의 경로를 잡아주고 그 바로 아래있는 퍼블릭을 스택틱
    으로 잡았다.
이제 html파일에서 쓰는 경로는 퍼블릭다음 / 부터 적으면 된다.
예제)

const express = require("express"); //express 프레임워크 선언 익스프레스속에 모듈 많음
const app = express();

const fs = require("fs");

const ejs=require("ejs"); //익스텐디드자바스크립트(템플릿엔진)

app.use(express.static(__dirname + "/public"));   // _dirname + "/public"퍼블릭디렉토리  경로   여기를  스택틱으로 쓴다
//기본경로 스택틱을 퍼블릭으로 해줬기 때문에 에이치티엠엘에 그대로/고양이 jpg로 시작해도된다
//퍼블릭부터출발하는디렉토리

//app.set("view engine","ejs"); //뷰엔진에서 ejs를 쓰겟다  이 코드에서는 빼도 무방
//app.set("view" , __dirname + "/views");  //뷰엔진에서 ejs를 쓰겟다  이 코드에서는 빼도 무방

app.get("/",(req,res)=>{ //3000 홈
   res.send(`<h1>static</h1>`);
});

app.get("/static", (req,res)=>{
   fs.readFile("views/05.static.html", "utf8" ,(err,html)=>{  //이건캐릭터니까 유티에프팔로읽기       
      res.send(html);
   });
});

//ejs에 있는 <%- data %> 변수의 값 넣어주기
app.get("/ejs",(req,res)=>{     // 05.static.ejs 에서 <%= data %> 로  "ejs에서 보내는 데이터" 문구를 받았다
   ejs.renderFile("./views/05.static.ejs", {data:"EJS에서 보내는 데이터"}, (err,html)=>{
      res.send(html);
   });
});

///////////////////////////////////////////////////

// 아래 두개는 필수 코드


app.get("*", (req,res)=>{  //*는 위에서 지정한경로가 아닌 모든 경로 즉 맨뒤에리슨바로위에붙는코드
   res.status(404).send("path not found"); //위랑같은코드 메소드체이닝  페스낫파운드는 인터넷창에출력 -인터넷주소뒤에 / 이상한데 쳣을때상황
});

app.listen(3000, (req,res)=>{  //3000은포트 //리슨 기다리고 잇다가 오면 연결
   console.log("server is running at http://127.0.0.1:3000");
});

4. bodyParser

get으로 넘긴 정보를 post에서 req.body.받는다
(주소창에서 /~ 는 params. 로 주소창에서 ?~ 는 query.)

바디파서 사용하는 방법 :

const bodyParser = require("body-parser");  //바디파서선언
app.use(bodyParser.urlencoded({extended: false}));  
// 바디파서를 사용하겟다는 의미  url encoded 마임형식	
	이제 req.body.uid 처럼 바디파서를 사용할 수 있다.
예제)

//cmd 실행
const express = require("express"); //express 프레임워크 선언 익스프레스속에 모듈 많음
const app = express(); // app.

const fs = require("fs"); //파일시스템 파일읽고쓰기등
const path = require("path");  
//스택틱설정
app.use(express.static(__dirname + "/public")); 

const bodyParser = require("body-parser");  //바디파서선언
app.use(bodyParser.urlencoded({extended: false}));  
// 바디파서를 사용하겟다는 의미(req.body.uid)  url encoded 마임형식

app.get("/",(req,res)=>{ //홈
   res.send(`<h1>body-parser middleware</h1>`);
});

app.get("/login", (req,res)=>{
   fs.readFile("views/06.login.html", "utf8" ,(err,html)=>{  //이건캐릭터니까 유티에프팔로읽기       
      res.send(html);
   });
});

app.post("/login", (req,res)=>{
   const uid =req.body.uid; //위에서 겟으로 넘긴 정보를 req.바디로 받는다
   const pwd = req.body.pwd;
   res.send(`<h1>사용자id: ${uid} 패스워드: ${pwd}</h1>`); 
});  //로긴화면에서 유저가입력하면 그걸띄운다
   //   path?uid =        req.query.uid
     //  path/:uid         req.params.uid
      // form Date(uid)    req.body.uid 로 읽는다
       //app.use(bodyParser.urlencoded({extended: false})); 으로 가능한 일 이게 미들웨어
 
///////////////////////////////////////////////////

// 아래 두개는 필수 코드

app.get("*", (req,res)=>{  //*는 위에서 지정한경로가 아닌 모든 경로 즉 맨뒤에리슨바로위에붙는코드
   res.status(404).send("path not found"); //위랑같은코드 메소드체이닝  페스낫파운드는 인터넷창에출력 -인터넷주소뒤에 / 이상한데 쳣을때상황
});

app.listen(3000, (req,res)=>{  //3000은포트 //리슨 기다리고 잇다가 오면 연결
   console.log("server is running at http://127.0.0.1:3000");
});

0개의 댓글