多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

接口测试实战之GET/POST请求区别详解

更新时间:2022-07-08 09:06:43 作者:多测师 浏览:76

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

接口测试实战之GET/POST请求区别详解

  GET、POST 的区别总结

  1、请求行的 method 不同;

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

  3、从行业通用规范的角度来说,无状态变化的建议使用 GET 请求,数据的写入与状态建议用 POST 请求。

  演示环境搭建

  为了避免其他因素的干扰,使用 Flask 编写一个简单的 Demo Server。

  1. 安装flask

  pip install flask

  2. 创建一个 hello.py 文件

  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

  #El request form

  post = request.form

  #分别打印拿到的参数和form

  return f"query: {query}\n"\

  f"post: {post}"

  3. 启动服务

  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 参数,是两种请求都允许的格式。

  以上内容为大家介绍了接口测试实战之GET/POST请求区别详解,本文由多测师亲自撰写,希望对大家有所帮助。了解更多接口测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部