2、node服务器
一、简单的node服务器搭建
1、首先新建一个名为server.js的文件(文件名随意,后缀名必须是.js)
2、粘贴进文件以下内容
//引入http模块 const http = require("http"); //第一种 // //使用http创建服务,传入创建服务的参数 // let server = http.createServer((req,res)=>{ // //req:请求参数 res:响应参数 // //路径 // console.log(req.url); // //请求方式 // console.log(req.method); // //写入页面 // res.write("hello"); // //结束响应 // res.end(); // }); // //服务器监听8080端口,这里的端口号可以修改 // server.listen(8080); //第二种 // const server = http.createServer(); // server.on("request",function (req,res) { // console.log(req.url); // res.write("hello"); // res.end(); // }); // server.listen(8080); //第三种 http.createServer((req,res)=>{ console.log(req.url); res.write("hello"); res.end(); }).listen(8080);
3、右键启动服务器出现下图则说明启动成功
4、访问http:localhost:8080,出现如下现象,说明服务配置成功
二、服务器处理get请求 (req.method = GET)
1、get请求的路径一般为http://localhost:8080?id=3&name=9
2、
//用服务器处理get请求 //引入http模块 const http = require("http"); //创建服务 http.createServer((req,res)=>{ //我们的访问路径是:http://localhost:8080/index.html?id=3&name=9 //打印出来的req.url是:/index.html?id=3&name=9 console.log(req.url); //获取参数对象 //方式一:原生的js来获取(不推荐) // let url = req.url.split("?")[1]; //id=3&name=9 // let arr = url.split("&"); // console.log(arr); // let paramArr = []; // let param = {}; // for (let i = 0; i < arr.length; i++) { // paramArr = arr[i].split("="); // param[paramArr[0]] = paramArr[1]; // } // console.log(param); //方式二:使用querystring模块+原生 // const querystring = require("querystring"); // let dataStr = req.url.split("?")[1]; //id=3&name=9 // console.log(dataStr); // let dataObj = querystring.parse(dataStr);//把字符串转化为对象 // console.log(dataObj); //方式三:使用url+querystring模块 // const url = require("url"); // const querystring = require("querystring"); // let dataStr = url.parse(req.url).query;//获取的是url对象的query的属性值 // let dataObj = querystring.parse(dataStr); // console.log(dataObj); //方式四:只使用url模块 const url = require("url"); //直接获取url对象的query为对象的值 let dataObj = url.parse(req.url,true).query; console.log(dataObj); //结束服务器相应 res.end("此次相应结束"); }).listen(8080);
三、处理POST请求
1、处理post请求的页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>node处理post请求</title> </head> <body> <form action="http://localhost:8080" method="post"> <input type="text" name="name" id=""> <input type="text" name="age" id=""> <input type="submit" value="提交"> </form> </body> </html>
2、post请求的处理
1 //用于处理post请求 2 const http = require("http"); 3 const server = http.createServer((req,res)=>{ 4 //创建数组用于存储参数 5 let arr = []; 6 //开始接受数据参数 7 req.on("data",(buffer)=>{ 8 arr.push(buffer); 9 }); 10 //终止接受参数 11 req.on("end",()=>{ 12 let buffer = Buffer.concat(arr);//获取到的是buffer 13 let dataStr = buffer.toString(); //name=111&age=2222 14 const querystring = require("querystring"); 15 let dataObj = querystring.parse(dataStr); 16 console.log(dataObj); 17 18 }); 19 res.end(); 20 }).listen(8080);
三、文件处理的fs模块
1、fs :file system的缩写
2、
//对于文件进行读取的服务器 const http = require("http"); //加载fs模块 const fs = require("fs"); const server = http.createServer((req,res)=>{ //使用fs进行异步读取文件,路径写的为绝对路径(异步常用) // fs.readFile("E://x.txt", "utf8",(err, data) => { // //文件读取时可以添加utf8编码,使其不乱码,或者打印数据时进行utf8编码 // // fs.readFile("E://x.txt", "utf8", (err, data) => { // if (err) {//如果读取出现错误 // console.log(err); // } else { // //获取的数据data需要进行编码,或者文件读取时可以添加utf8编码,使其不乱码 // console.log(data.toString("utf8")); // } // }); //把文件写入进去(覆盖的形式),没有的话会自动创建 // fs.writeFile("E://y.txt","abddd",(err)=>{ // if (err) {//出现错误时,报异常 // console.log(err); // throw err; // } else { // console.log("写入成功"); // } // }); //不覆盖的方式添加,有就加,没有就创建 // fs.writeFile("E://m.txt","data",{flag:"a"},(err)=>{ // if (err) { // throw err; // } else { // console.log("写入成功"); // } // }); //只是添加,没有就创建 // fs.appendFile("E://yo.txt","我是新来的",(err)=>{ // if (err) { // throw err; // } else { // console.log("追加成功"); // } // }); //把读取的数据添加进去(异步,在回调函数中写入) // fs.readFile("E://x.txt","utf8",(err,data)=>{ // if(err){ // throw err; // }else{ // fs.writeFile("E://bs.txt",data,{flag:"a"},(err)=>{ // if (err) { // throw err; // } else { // console.log("写入成功"); // } // }); // } // }); //使用fs同步读取文件,有返回值,用的比较少 let data = fs.readFileSync("E://x.txt","utf8"); fs.writeFileSync("E://tb.txt",data,{flag:"a"},(err)=>{ if (err) { throw err; } else { console.log("写入成功"); } }); res.end(function () { console.log("请求结束"); }); }).listen(8080);