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

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

时间:2022-08-16 15:14:25浏览次数:77  
标签: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/16591611.html

相关文章

  • xxl-job 的cron表达式详解
    一、xxl-job 的简介xxl-job 是一个轻量级分布式任务调度平台,核心的设计目标:学习简单、开发迅速、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。而......
  • 基于错误的GET单引号变形字符型注入
    手工注入:代码审计:<?php//includingtheMysqlconnectparameters.include("../sql-connections/sql-connect.php");error_reporting(0);//takethevariablesif(isset($......
  • postgresql 自增列 初始值设置
    --获取自增列的名称SELECTpg_get_serial_sequence('table_name','id')ASsequence_name;--获取自增列的下一个值:SELECTnextval(pg_get_serial_sequence('tab......
  • sqli-labs 第二关---基于错误的GET整型注入
    手工注入:代码审计:<?php//includingtheMysqlconnectparameters.include("../sql-connections/sql-connect.php");error_reporting(0);//takethevariablesif(isset($......
  • Java注解最全详解(超级详细)
    Java注解是一个很重要的知识点,掌握好Java注解有利于学习Java开发框架底层实现。@mikechenJava注解定义Java注解又称Java标注,是在JDK5时引入的新特性,注解(也被称为元数......
  • json详解
    简述json是JavaScript Object Notation的缩写,json是轻量级的文本数据交换格式,SON独立于语言:JSON使用Javascript语法来描述数据对象,但是JSON仍然独立于语言和平......
  • Nacos 实现原理详解
    Nacos架构  ProviderAPP:服务提供者ConsumerAPP:服务消费者NameServer:通过VIP(VirtualIP)或DNS的方式实现Nacos高可用集群的服务路由NacosServer:Nacos服......
  • JWT 基础概念详解
    什么是JWTJWT(JSONWebToken)是目前最流行的跨域认证解决方案,是一种基于Token的认证授权机制。从JWT的全称可以看出,JWT本身也是Token,一种规范化之后的JSON结构......
  • java.lang.IllegalStateException: getWriter() has already been called for this re
    异常出现原因是response在获取字节流之前会判断字符流是否已使用,反之获取字符流之前也会判断字节流是否已使用,若判断已使用则抛出异常getWriter()/getOutStream()hasalre......
  • postman安装及使用
    参考文档:Postman安装及使用入门教程-Mafly-博客园(cnblogs.com)本文只是基于Chrome浏览器的扩展插件来进行的安装。首先,你要台电脑,其次,安装有Chrome浏览器,那你......