栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

GET和POST的区别以及传参详细解说

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

GET和POST的区别以及传参详细解说

文章目录

前言一、get和post的区别

1、w3school 标准答案2、GET、POST 请求报文上的区别 二、传参

1.get传参2.post传参

传入参数json传入参数data传入参数params 总结


前言

该文章为自己学习及经验总结,里面可能会有不准确的地方,后续会不断的修正
文章内容主要针对软件测试人员需要掌握的范围


一、get和post的区别 1、w3school 标准答案

2、GET、POST 请求报文上的区别

GET 和 POST 只是 HTTP 协议中两种请求方式,而 HTTP 协议是基于 TCP/IP 的应用层协议,无论 GET 还是 POST,用的都是同一个传输层协议,所以在传输上,本质没有区别。

报文格式上,不带参数时,最大区别就是第一行方法名不同, 仅仅是报文的几个字符不同而已
POST 方法请求报文第一行是这样的 POST /url HTTP/1.1
GET 方法请求报文第一行是这样的 GET /url HTTP/1.1
带参数时报文的区别呢? 在约定中,最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

例子:
如果请求方法为 GET,那么请求数据为空。它主要是在 POST 中进行使用,适用于需要填表单(FORM)的场景。我们通过一个实际的例子来看看 HTTP 的 GET 请求报文是什么样的,我们这里以访问 api.github.com/search/users?q=JakeWharton为例,通过抓包我们得到的请求报文如下所示:

我们重点看到请求行:

GET/search/users?q=JakeWharton HTTP/1.1

可以看到请求方法用的是 GET 请求,URL为/search/users?q=zhangsan,协议为 HTTP1.1。
请求行下面部分全都是请求头部,我们可以看到 host为 api.github.com,连接方式为长连接等信息。值得注意的是我们这个例子中是不存在请求数据的。

接下来我们再来看一下 POST请求的报文:

可以看到请求行中请求方法为 POST,URL里没有问号后接参数,协议版本也是 HTTP1.1 。它和上面 GET 方法例子不一样的地方在于它的请求参数是位于请求数据中的,可以看到 “biz_id”:“edu”,“room_id”:10001,"platform。。。 就是它的请求数据。并且我们要注意到在请求数据和请求头之间是空出一行的,这是必不可少的。

二、传参

一般情况下,params在get请求中使用,data、json在post请求中使用

1.get传参

见上文GET、POST 请求报文上的区别

2.post传参 传入参数json

传入参数, json=data json关键字参数就是表示 content-type :application/json

import requests

url = 'http://120.78.128.25:8766/futureloan/member/register'
headers = {"X-Lemonban-Media-Type":"lemonban.v2"}
data = {"mobile_phone":"13712341280","pwd":"12345678"}
#一定要添加header关键字参数,不能以位置参数传递
#因为放到了可变长参数里边
#content-type不需要添加,为什么??json关键字参数就是表示content-type,
res = requests.post(url,json=data,headers=headers)
print(res.json())

传入参数data

传入参数, data=data关键字参数表示 表单格式application/x-www-form-urlencoded

import requests

url = 'http://120.78.128.25:8766/futureloan/member/register'
headers = {"X-Lemonban-Media-Type":"lemonban.v2"}
data = {"mobile_phone":"13712341280","pwd":"12345678"}
#一定要添加header关键字参数,不能以位置参数传递
#因为放到了可变长参数里边
#data 关键字参数表示   表单格式x-www-form-urlencoded
res = requests.post(url,data=data,headers=headers)
print(res.json())

传入参数params

params=data,params 参数就是表示 query string(就是放在url参数里边)

import requests

url = 'http://120.78.128.25:8766/futureloan/member/register'
headers = {"X-Lemonban-Media-Type":"lemonban.v2"}
data = {"mobile_phone":"13712341280","pwd":"12345678"}
#一定要添加header关键字参数,不能以位置参数传递
#因为放到了可变长参数里边
#params 参数就是表示 query string
res = requests.post(url,params=data,headers=headers)
print(res.json())

总结

后续继续修正。
最后三个例子摘自https://blog.csdn.net/guiyin1150/article/details/109191783

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/778578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号