51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 878|回复: 0
打印 上一主题 下一主题

[资料] GET和POST这2个兄弟的详解介绍和区别!

[复制链接]
  • TA的每日心情
    无聊
    2024-11-5 10:03
  • 签到天数: 77 天

    连续签到: 1 天

    [LV.6]测试旅长

    跳转到指定楼层
    1#
    发表于 2022-8-19 14:52:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    前言
    该文章主要是作者对软件测试这些年一直以来的一些经验分享和总结,不代表权威仅供参考!如果有错误的地方欢迎大家指出,谢谢!
    一、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为例,通过抓包我们得到的请求报文如下所示:


    我们重点看到请求行:
    1. <font size="3">GET/search/users?q=JakeWharton HTTP/1.1
    2. </font>
    复制代码
    可以看到请求方法用的是 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
    1. <font size="3">import requests

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


    传入参数data

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

    1. <font size="3">import requests

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

    传入参数params

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

    1. <font size="3">import requests

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

    总结

    后续继续修正。






    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 10:22 , Processed in 0.064089 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表