POST请求与GET请求

get和post是HTTP协议中的两种发送请求的方法

HTTP是基于TCP/IP的关于数据如何在万维网中通信的协议

 一、get请求与querystring

get请求即客户端向server服务端请求数据,如:获取文章列表的分页码等

通过queryString来获取数据,如:liet.html?t=a&page=2

通过浏览器直接访问一个地址即发送get请求,如:地址栏输入url或者点击超链接访问页面

通过URL模块来获取get请求数据

const http = require('http');
const url = require('url');
const querystring = require('querystring');
http.createServer(function(req, res){

    res.writeHead(200, {'Content-Type': 'text/plain;charset=utf8'});
    //解析URL参数
    let params = url.parse(req.url, true).query;
    res.write('网站名' + params.name);
    res.write('\n');
    res.write('网站URL:' + params.url);
    res.end();

}).listen(3000);

二、post请求与postdata

post请求,即客户端向服务器传递数据,如微博发布文章等

通过post data传递数据

浏览器无法直接模拟,使用postman来模拟post请求发送数据

const server = http.createServer(function(req, res){
    let str = "", i=0;
    req.on('data', function(data){
        console.log(`第${i++}次请求接收数据`);
        str += data;
    });
    res.on('end', function(){
        let post = querystring.parse(str);
        console.log(str);
        res.end(str);
    })
});

server.listen(8080);

三、综合案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>post请求</title>
    <script src="jquery.min.js"></script>
    <script>
        $(document).ready(function(){
            let oUser = $('#username');
            let oPass = $('#password');
            let oReg = $('#oReg');
            let oLogin = $('#oLogin');
            oReg.click(function(){
                $.ajax({
                    url: 'http://127.0.0.1:3000/user1',
                    data: {act: 'reg', username: oUser.val(), password: oPass.val()},
                    type: 'POST',
                    dataType: 'JSON',
                    success: function(response){
                        console.log(response);
                        if(response.flag){
                            alert(response.msg);
                        }else{
                            alert(response.msg)
                        }
                    },
                    error: function(error){
                        console.log(error);
                    }
                })
            });
            oLogin.click(function(){
                $.ajax({
                    url: 'http://127.0.0.1:3000/user1',
                    data: {act: 'login', username: oUser.val(), password: oPass.val()},
                    type: 'POST',
                    dataType: 'JSON',
                    success: function(response){
                        console.log(response);
                        if(response.flag){
                            alert(response.msg);
                        }else{
                            alert(response.msg)
                        }
                    },
                    error: function(error){
                        console.log(error);
                    }
                })
            })
        })
    </script>
</head>
<body>
<form action="">
    用户名:<input type="text" name="username" id="username"/><br>
    密码:<input type="password" name="password" id="password"/><br>
    <input type="button" id="oReg" value="注册">
    <input type="button" id="oLogin" value="登录"><br>
</form>
</body>
</html>

const http = require('http');
const querystring = require('querystring');
let users = {'admin': 12345, 'Tom': 123};

const server = http.createServer((req, res)=>{
    res.writeHead(200, {
        'Access-Control-Allow-Origin': '*',
        'Content-Type': 'application/json;charset=utf-8'
    });
    let postData = '';
    req.on('data', chunk => {
        postData += chunk;
    })
    req.on('end', ()=>{
        if(req.url != '/favicon.ico'){
            // console.log(postData)
            let obj = querystring.parse(postData);
            // console.log(obj.username);
            let username = obj.username;
            let password = obj.password;
            let act = obj.act;
            console.log(req.url)
            if(req.url == '/user1'){
                switch(act){
                    case 'reg':
                        if(users[username]){
                            res.write('{"flag": false, "msg": "此账号已存在!"}');
                        }else{
                            users[username] = password;
                            res.write('{"flag": true, "msg": "注册成功!"}');
                        }
                        break;
                    case 'login':
                        if(users[username] == null){
                            res.write('{"flag": false, "msg": "此账号不存在!"}');
                        }else if(users[username] !== password){
                            res.write('{"flag": false, "msg": "密码错误!"}');
                        }else {
                            res.write('{"flag": true, "msg": "登录成功!"}');
                        }
                        break;
                }
            }
        }
        res.end();
    })


});
server.listen(3000, ()=>{});
const http = require('http');
let users = {'admin': 12345, 'Tom': 123};

const server = http.createServer((req, res)=>{

    if(req.url != '/favicon.ico'){
        let obj = new URL(req.url, 'http://127.0.0.1/');
        let username = obj.searchParams.get('username');
        let password = obj.searchParams.get('password');
        let act = obj.searchParams.get('act');

        res.writeHead(200, {
            // 只针对某个地址实现跨域
            // 'Access-Control-Allow-Origin': 'http://127.0.0.1:5500',
            // 所有请求都允许跨域
            'Access-Control-Allow-Origin': '*',
            'Content-Type': 'application/json;charset=utf-8'
        });
        let url=req.url.split('?')[0];
        if(url == '/user'){
            switch(act){
                case 'reg':
                    if(users[username]){
                        res.write('{"flag": false, "msg": "此账号已存在!"}');
                    }else{
                        users[username] = password;
                        res.write('{"flag": true, "msg": "注册成功!"}');
                    }
                    break;
                case 'login':
                    if(users[username] == null){
                        res.write('{"flag": false, "msg": "此账号不存在!"}');
                    }else if(users[username] !== password){
                        res.write('{"flag": false, "msg": "密码错误!"}');
                    }else {
                        res.write('{"flag": true, "msg": "登录成功!"}');
                    }

                    break;
            }
        }
    }
    res.end();
});
server.listen(3000, ()=>{});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值