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);

  

原文地址:https://www.cnblogs.com/dhrwawa/p/10714666.html