POST请求与GET请求

news2024/9/29 1:27:51

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, ()=>{});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429677.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式 -- 模板方法模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

java生成随机字符串的方法

今天我们来学习下随机数的生成&#xff0c;随机数就是不确定的数&#xff0c;它可以是任意一个整数或者字符串。下面就让我们一起来学习下随机字符串的生成吧。 首先&#xff0c;我们需要先定义一个名为 str的数组&#xff0c;并将它作为输入文件。 1、使用 Java中的 str作为输…

传播的最大能量场来自私域的裂变——“春生百味”品牌营销裂变活动复盘后记

关于大宗家电等耐用品品牌想要精准触达潜在用户&#xff0c;如何实施传播策略&#xff1f; 刚刚与方太品牌方复盘完3月份“春生百味”关于营销裂变直播活动的整体效果&#xff0c;我们借此次整体案例实施过程的梳理&#xff0c;以分享几个裂变过程中的关键点。 传播的最大能量…

React styled-components(二)—— props、attrs属性

styled-components props、attrs属性propsprops 穿透添加 attrs 属性获取 state 中的样式变量控制样式通过 props 控制样式通过 css 控制样式props props 穿透 styled-components 可以 props 穿透&#xff0c;把属性穿透到元素中。 通常&#xff0c;用 css 的 input 组件实现…

【Python】【进阶篇】十七、Python爬虫实现实时翻译

目录十七、Python爬虫实现实时翻译17.1 JS代码slat与sign17.2 Python代码表示参数17.3 完整程序实现十七、Python爬虫实现实时翻译 YD翻译是以异步方式实现数据加载的&#xff0c;要实现数据抓取&#xff0c;其过程极其繁琐。 上一节《Python爬虫的浏览器实现抓包》&#xff…

使用LeafLet叠加Geoserver wms图层到已有底图的方法

背景 随着现代城市交通建设的飞速发展&#xff0c;各个城市的地铁路线和地铁站点也是越来越多。地铁极大的方便了广大人民的交通出行。作为Giser&#xff0c;经常会遇到需要将一份shp数据在地图上展示&#xff0c;甚至需要在网页端进行浏览的需要。把shp这种空间矢量数据进行we…

数据库笔记Ch04----概念数据库的设计(1)

前三章我们学习了如何使用DBMS我们学会了增删改查&#xff0c;插入数据库&#xff0c;创建视图... 这一章是我们的数据库刚刚建立&#xff0c;只有一个需求&#xff0c;需要根据用户的需求来创建数据库&#xff0c;每个表有哪些属性&#xff0c;参照关系是什么&#xff0c;主键…

一.Jetpack全套

Jetpack全套一.Jetpack介绍1.特性&#xff1a;2.分类&#xff1a;二.应用架构三.LifeCycle:1.简介2.简单使用3.实战&#xff1a;Dialog内存泄漏四.VideModel1.介绍2.简单使用3.AndroidViewModel使用4.使用viewmodel实现fragment直接数据共享五.LiveData1.介绍2.常用方法3.使用场…

车载 OTA技术概念

1 OTA技术概念 随着高级辅助驾驶的发展和自动驾驶的引入&#xff0c;汽车变得越来越智能&#xff0c;这些智能汽车被软件控制&#xff0c;装有巨量的软件程序&#xff0c;当出现一个软件程序问题或者更新时&#xff0c;如果按照传统的解决方式&#xff0c;那都将是一项很繁重的…

【深度学习】基于Hough变化的答题卡识别(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。⛳座右铭&#…

云开发--实现发送邮件+短信+链接跳转小程序功能

目录 1、小程序实现发送邮件 准备一个qq邮箱&#xff0c;并启动SMTP服务 确定小程序云开发环境&#xff0c;并新建云函数 2、小程序实现发送短信 确定应用 确定签名 确定模板 编写云函数-发送短信 3、链接跳转小程序 H5 配置 生成 URL Link 学习记录&#xff1a; …

【获奖案例巡展】科技向善之星——中航电梯5G+大数据管理平台

为表彰使用大数据、人工智能等基础软件为企业、行业或世界做出杰出贡献和巨大创新的标杆项目&#xff0c;星环科技自2021年推出了“新科技 星力量” 星环科技科技实践案例评选活动&#xff0c;旨在为各行业提供更多的优秀产品案例&#xff0c;彰显技术改变世界的力量&#xff0…

网络编程(python)

文章目录一、网络基础&#xff08;IP&#xff0c;端口&#xff0c;TCP等&#xff09;二、TCP网络应用可开发流程三、HTTP协议和静态Web服务器四、搭建Python自带静态Web服务器一、网络基础&#xff08;IP&#xff0c;端口&#xff0c;TCP等&#xff09; IP地址&#xff1a;标识…

企业的数据中台到底指的是什么?_光点科技

随着数据技术的不断发展和企业数据应用的广泛应用&#xff0c;越来越多的企业开始将数据中台作为数字化转型的核心战略之一。那么&#xff0c;企业的数据中台到底指的是什么呢&#xff1f; 数据中台是一种以数据为核心的企业数字化转型架构&#xff0c;旨在通过数据的汇聚、整合…

Lego- 美团接口自动化测试实战(详细解析)

目录&#xff1a;导读 一、概述 1.1 接口自动化概述 1.2 提高 ROI 1.3 Lego 的组成 二、脚本设计 2.1 Lego 的做法 2.2 测试脚本 2.3 配置文件 三、用例设计 3.1 一些思考 3.2 Lego 接口自动化测试用例 3.3 参数化 3.4 前后置动作 3.5 执行各部分 四、网站功能 …

软件测试员----面试,你准备好了么?

最近有机会做一些面试工作&#xff0c;主要负责面试软件测试人员招聘的技术面试。 之前一直是应聘者的角色&#xff0c;经历了不少次的面试之后&#xff0c;多少也积累一点面试的经验&#xff0c;现在发生了角色转变。初次的面试就碰到个工作年限比我长的&#xff0c;也没有时间…

c++11 标准模板(STL)(std::stack)(四)

定义于头文件 <stack> template< class T, class Container std::deque<T> > class stack;std::stack 类是容器适配器&#xff0c;它给予程序员栈的功能——特别是 FILO &#xff08;先进后出&#xff09;数据结构。 该类模板表现为底层容器的包装…

Spark学习——DataFrame清洗HDFS日志并存入Hive中

目录 1.开启Hadoop集群和Hive元数据、Hive远程连接 2.配置 3.读取日志文件并清洗 4.单独处理第四列的数据——方法一&#xff1a; 5.单独处理第四列的数据——方法二&#xff1a; 6.单独处理第四列的数据——方法三&#xff1a; 7.数据清洗结果展示 8.存入Hive中 9.…

The 2021 China Collegiate Programming Contest (Harbin) D. Math master

题目链接 题解 2632^{63}263大概是101910^{19}1019那么一共有19位需要讨论, 每一个位数各有保留和删除两种状态, 全部状态就是2182^{18}218种 因为每一位数都有两种状态, 使用二进制数表示每个状态, 正好能全部表示, 在二进制位数下1表示保留, 0表示删除(反过来也一样) 使用二…

分布式版本控制工具 —— Git

一、Git 基本介绍 1.1 相关概念 1️⃣ 首先&#xff0c;我们要知道什么是Git&#xff1f; Git 是一个免费、开源的版本控制系统&#xff0c;它可以有效地跟踪文件的更改&#xff0c;协调多人在同一个项目上的开发&#xff0c;以及管理不同版本的代码。 Git 最初是由 Linus …