首页 > 其他分享 >技术分享 | 实战详解接口测试请求方式Get、post

技术分享 | 实战详解接口测试请求方式Get、post

时间:2022-08-15 11:57:12浏览次数:75  
标签:127.0 请求 GET 0.1 Get request 详解 POST post

原文链接

本文节选自霍格沃兹测试开发学社内部教材

在日常的工作当中,http 请求中使用最多的就是 GET 和 POST 这两种请求方式。那么掌握这两种请求方式的原理,以及两种请求方式的异同,也是之后做接口测试一个重要基础。

GET、POST的区别总结

1、请求方法不同

2、post 可以附加 body,可以支持 form、json、xml、binary 等各种数据格式

3、从行业通用规范的角度来说,如果对数据库不会产生数据变化的,比如查询操作,建议使用 GET 请求,数据的写入与状态建议用 POST 请求

演示环境搭建

为了避免其他因素的干扰,使用 flask 编写一个简单的 demo server。

1、安装 flask

pip install flask

  1. 创建一个 hello.py 文件
from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

@app.route("/request", methods=['POST', 'GET'])
def hellp():
    #拿到request参数
    query = request.args
    #拿到request form
    post = request.form
    #分别打印拿到的参数和form
    return f"query: {query}\n"\
           f"post: {post}"

  1. 启动服务
export FLASK_APP=hello.py
flask run

提示下面信息则表示搭建成功

 * Serving Flask app "hello.py"
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

cURL命令发起GET、POST请求

发起 GET 请求,a、b 参数放入 URL 中发送,并保存在 get 文件中

curl 'http://127.0.0.1:5000/request?a=1&b=2' -v -s &>get

发起 POST 请求,a、b 参数以 form-data 格式发送,并保存在 post 文件中

 curl 'http://127.0.0.1:5000/request?' -d "a=1&b=2" -v -s &>post

GET、POST 请求对比

注意:>的右边为请求内容,<右边为响应内容

GET 请求过程

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> GET /request?a=1&b=2 HTTP/1.1
> Host: 127.0.0.1:5000
> User-Agent: curl/7.64.1
> Accept: */*
>
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 80
< Server: Werkzeug/0.14.1 Python/3.7.5
< Date: Wed, 01 Apr 2020 07:35:42 GMT
<
{ [80 bytes data]
* Closing connection 0
query: ImmutableMultiDict([('a', '1'), ('b', '2')])
post: ImmutableMultiDict([])

POST 请求过程

*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 5000 (#0)
> POST /request?a=1&b=2 HTTP/1.1
> Host: 127.0.0.1:5000
> User-Agent: curl/7.64.1
> Accept: */*
> Content-Length: 7
> Content-Type: application/x-www-form-urlencoded
>
} [7 bytes data]
* upload completely sent off: 7 out of 7 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: text/html; charset=utf-8
< Content-Length: 102
< Server: Werkzeug/0.14.1 Python/3.7.5
< Date: Wed, 01 Apr 2020 08:15:08 GMT
<
{ [102 bytes data]
* Closing connection 0
query: ImmutableMultiDict([('a', '1'), ('b', '2')])
post: ImmutableMultiDict([('c', '3'), ('d', '4')])

对两个文件进行对比:

从图中可以清楚看到 GET 请求的 method 为 GET,POST 请求的 method 为 POST,此外,GET 请求没有 Content-Type 以及 Content-Length 这两个字段,而请求行中的 URL 带有 query 参数是两种请求都允许的格式。

获取更多相关资料,请添加微信ceshiren001

标签:127.0,请求,GET,0.1,Get,request,详解,POST,post
From: https://www.cnblogs.com/chengzi-ceba/p/16587773.html

相关文章

  • Java NIO全面详解(看这篇就够了)
    很多技术框架都使用NIO技术,学习和掌握JavaNIO技术对于高性能、高并发网络的应用是非常关键的@mikechenNIO简介NIO中的N可以理解为Non-blocking,不单纯是New,是解决......
  • Windows下postgresql安装步骤
    1.下载安装包官方下载链接本文示例postgresql-14.5-1-windows-x642.右键以管理员身份运行安装程序3.安装目录4.选择组件5.数据目录6.设置密码,默认超级用户postg......
  • Java开发学习(二十五)----使用PostMan完成不同类型参数传递
    一、请求参数请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数?关于请求参数的......
  • Python 内置函数getattr()
    优点可消除if...else Python面向对象中的反射通过字符串的形式操作对象的属性,trueorfalsePython中一切皆为对象,所以只要是对象都可以使用反射比如:实例对象、......
  • javaweb Filter详解
    Filter详解1.快速入门packagecom.cj.filter;importjavax.servlet.*;importjavax.servlet.annotation.WebFilter;importjavax.servlet.annotation.WebServlet;i......
  • Java方法详解
    Java方法详解一、方法system(类).out(对象).println();(方法)类+对象+方法方法包含于类或者对象中方法是实现某个功能的语句块的集合,一个方法只实现一个功能方法命名规则:首......
  • 详解二分查找算法 && leetcode35. 搜索插入位置
    https://blog.csdn.net/weixin_39126199/article/details/118785065 https://leetcode.cn/problems/search-insert-position/classSolution{public:intsearc......
  • Java中Get和Post的使用
    原文链接1Get请求数据项目地址:https://github.com/Snowstorm0/learn-get-post1.1Controller文件名MyController,内容为:@RestController@RequestMapping("/homepage"......
  • Hive存储格式之RCFile详解,RCFile的过去现在和未来
    我在整理Hive的存储格式和压缩格式,本来打算一篇发出来,结果其中一小节就有很多内容,于是打算写成Hive存储格式和压缩格式系列。本节主要讲一下Hive存储格式最早的典型的列式......
  • canvas的drawImage方法参数详解
    HTML5中引入新的元素canvas,其drawImage方法允许在canvas中插入其他图像(img和canvas元素)。drawImage函数有三种函数原型:第一个参数image可以用HTMLImageElement,H......