zoukankan      html  css  js  c++  java
  • 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);

      

  • 相关阅读:
    (48)zabbix报警媒介:自定义脚本Custom alertscripts
    Centos7下cratedb数据导入导出copy to copy from
    CentOS7下cratedb备份及恢复(快照)
    Centos7下mysql5.7.22主从配置
    Centos7安装配置MySQL5.7
    Centos7安装配置iptable
    Centos7 LNMP 一键安装
    Centos7防范SYN
    Centos7安装RabbitMQ解决Erlang依赖报错
    centos7安装配置zabbix4.0
  • 原文地址:https://www.cnblogs.com/dhrwawa/p/10714666.html
Copyright © 2011-2022 走看看