基础练习(一)

1. get/post

客户端同时发起get/post请求并解析
思路:引入所需模块——创建服务——启动服务——前端发送请求
前端代码



  
    
    
  
  
    
用户:
密码:

node代码

// 引入模块
const http=require('http');
const url=require('url');
const querystring=require('querystring');
// 创建服务
let server=http.createServer((req,res)=>{
    //get
    let {pathname,query}=url.parse(req.url,true);
    let pathname2=req.url;
    //post
    let str='';
    req.on('data',data=>{
        str+=data;
    });
    req.on('end',()=>{
        let post=querystring.parse(str);
        console.log(pathname,pathname2,query,post)
    })
})
server.listen(8080);

打印参考:/aaa /aaa?id=12&a=55 { id: '12', a: '55' } { user: '11', pass: '67' }
注意:url和req.url的使用,pathname2其实是url

2.简易注册登录流程

只是简单模拟流程
思路:引入模块——创建服务——启动服务——发送请求——进行判断——验证(懒得写了)——反馈

const http=require('http');
const url=require('url');
const querystring=require('querystring');
const fs=require('fs');
let server=http.createServer((req,res)=>{
    //获取pathname,判断用
    let {pathname}=url.parse(req.url,true);
    //获取post数据
    console.log(pathname);
    let str='';
    req.on('data',data=>{
        str+=data;
    });

    req.on('end',()=>{
     let post=querystring.parse(str);
    // 路由判断写在回调里,保证post数据接收完
    switch(pathname){
        case '/reg':
            res.write("reg ing");
            res.end();
            break;
        case '/log':
            res.write("log ing");
            res.end();
            break;
        default:
            fs.readFile(`www${pathname}`,(err,data)=>{
                if(err){
                    res.writeHeader(404);
                    res.write('404');
                }else{
                    res.write(data);
                }
                res.end();
            })
        }
    });
});
server.listen(8080);

盲写注意点:const变成let、先req再res(现接收再反馈)、url.parse(req.url,true)——不写true只是字符串、post要保证end再res、
注意www${pathname}的格式(反斜杠)

你可能感兴趣的:(基础练习(一))