python接口自动化(六)--发送get请求接口(详解)

news2024/10/7 5:30:22

简介

  如果想用python做接口测试,我们首先有不得不了解和学习的模块。它就是第三方模块:Requests。 虽然Python内置的urllib模块,用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能。更好的方案是使用

requests。它是一个Python第三方库,处理URL资源特别方便。查看其中文官网:Requests: 让 HTTP 服务人类 — Requests 2.18.1 文档 英文官网:http://www.python-requests.org/en/master/     可以看一下它的很多实用的高级功能。‘’

功能特性

  Requests 完全满足今日 web 的需求。

  • Keep-Alive & 连接池
  • 国际化域名和 URL
  • 带持久 Cookie 的会话
  • 浏览器式的 SSL 认证
  • 自动内容解码
  • 基本/摘要式的身份认证
  • 优雅的 key/value Cookie
  • 自动解压
  • Unicode 响应体
  • HTTP(S) 代理支持
  • 文件分块上传
  • 流下载
  • 连接超时
  • 分块请求
  • 支持 .netrc

环境安装(安装requests)

您如果安装了Anaconda,requests就已经可用了。否则,需要在命令行下通过pip安装:

pip install requests

注意:pip很容易就会版本升级,

方法1:检测并更新

pip list –outdated

方法2:

♦先卸载:

pip uninstall packagename

♦在用:easy_install.exe安装

easy_install.exe pip

出现Installing collected packages: idna, chardet, certifi, requests

Successfully installed certifi-2019.3.9 chardet-3.0.4 idna-2.8 requests-2.21.0 说明requests模块安装成功!

使用requests(get请求无参数param)

1、将安装好的requests模块导入后,通过GET访问一个URL地址的网页页面,如:https://www/douban.com

2、这里的 r 也就是 response,请求后的返回值,可以调用 response 里的 status_code 方法查看状态码

3、状态码 200 只能说明这个接口访问的服务器地址是对的,并不能说明功能 OK,一般要查看响应的内容,r.text 是返回文本信息

看吧!这个就是requests的威力,看起来是不是很神奇很牛逼:

使用requests(get请求有参数param)

1、再发一个带参数的 get 请求,如在豆瓣网搜索:西游记,url 地址为:https://www.douban.com/search?q=西游记

2、请求参数:q=西游记,可以以字典的形式传参:{"q": "西游记"}

3、多个参数格式:{"key1": "value1", "key2": "value2", "key3": "value3"}

 

 

 这部分最容易犯错的部分,就是1、豆瓣网址后没有+/search;2、params错误的写成param

使用request(get获取响应文本content)

1、豆瓣网首页如果用 r.text 会发现获取到的内容有乱码,因为豆瓣网首页响应内容是 gzip 压缩的(非 text 文本)

2、如果是在 fiddler 工具乱码,是可以点击后解码的,在代码里面可以用 r.content 这个方法,content 会自动解码 gzip 和 deflate 压缩(这个就是开始介绍requests的高级功能:自动解码和自动解压)

附录response返回的其他信息

1.response 的返回内容(content)还有其它更多信息

-- r.status_code #响应状态码

-- r.content #字节方式的响应体,会自动为你解码 gzip 和deflate 压缩

-- r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回 None

-- r.json() #Requests 中内置的 JSON 解码器,requests的方便之处还在于,对于特定类型的响应,例如JSON,可以直接获取

-- r.url # 获取 url

-- r.encoding # 编码格式,requests自动检测编码

-- r.cookies # 获取 cookie

-- r.raw #返回原始响应体-- r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码

-- r.raise_for_status() #失败请求(非 200 响应)抛出异常

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/704297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git入门级指南

Git入门级指南 在软件开发和版本控制中,Git是一种非常流行且强大的工具。本文将为你提供关于Git的基本知识,并提 供一些实例来演示如何正确使用Git来管理代码。 关于git的简介 Git是一种分布式版本控制系统,它可以跟踪和管理项目中的代码…

前端安全问题及解决方案

随着互联网的高速发展,信息安全问题已经成为行业最为关注的焦点之一。总的来说安全是很复杂的一个领域,在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,还时常遭遇网络劫持、非法调用 Hybrid API 等新型安全问题。…

(2023最新)互联网1010道Java面试真题汇总

我相信各位小伙伴们都发现了,现在的 IT 的环境并不如以前了,似乎是迎来“寒冬”,再加上最近上热搜的阿里云大裁员事件,又将 Java 开发岗推上了一个新的难度。而被裁员的人,不得不降薪重新找到一份工作,而经…

Django框架-5

路由系统 通过URL(Uniform Resource Locator,统一资源定位符)可以访问互联网上的资源——用户通过 浏览器向指定URL发起请求,Web服务器接收请求并返回用户请求的资源,因此可以将URL视为用户与服务器之间交互的桥梁。 …

MATLAB中scatter函数用法

目录 语法 说明 ​示例 scatter函数的功能是绘制散点图。 语法 scatter(x,y) scatter(x,y,sz) scatter(x,y,sz,c) scatter(___,"filled") scatter(___,mkr) scatter(tbl,xvar,yvar) scatter(tbl,xvar,yvar,"filled") scatter(ax,___) scatter(___,Nam…

Mybatis面试题--MyBatis延迟加载

Mybatis是否支持延迟加载? 答:Mybatis支持延迟记载,但默认没有开启 什么叫做延迟加载? 查询用户的时候,把用户所属的订单数据也查询出来,这个是立即加载 查询用户的时候,暂时不查询订单数据&…

【C/C++】拷贝构造函数的调用 使用方法

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…

Linux--询问符:-i

功能&#xff1a; 执行某个操作时&#xff0c;Linux会询问用户是否确定执行操作。只有输入yes或者y才能成功执行操作。输入no或者n或者enter则操作失败 示例&#xff1a; ①确认操作 ②反悔操作

美工面试题目(合集)

美工面试题目篇1 1、目前常用的WEB标准静态页面语言是。(4分) 2、改变元素的外边距用&#xff0c;改变元素的内填充用。(6分) 3、在Table中&#xff0c;TR是&#xff0c;TD是。(6分) 4、如果给一行两列的表格(table)定义高度样式&#xff0c;在标签中定义最合理&#xff0c…

js中改变this指向的三种方式

js中改变this指向的三种方式 1、call方法2、apply方法3、bind方法 1、call方法 使用 call 方法调用函数&#xff0c;同时指定函数中 this 的值&#xff0c;使用方法如下代码所示&#xff1a; <script>const obj {uname: 刘德华}function fn(x, y) {console.log(this) …

Java Stream 流进行根据元素某一属性过滤计算其他属性实例

设计一个测试类Tuser package org.example;import com.alibaba.fastjson.annotation.JSONField;import java.io.Serializable;public class Tuser implements Serializable {//用户名private String name;//平台名称private String sys;//登录次数private int times;//一个合并…

如何使用计算机视觉检测钓鱼攻击?

无论你是喜欢、还是厌恶、亦或害怕&#xff0c;以ChatGPT为代表的新兴人工智能&#xff08;AI&#xff09;平台&#xff0c;目前正在更加深入地迈向公共领域。它们不仅表现为各种聪明的聊天机器人&#xff0c;而且能够在幕后以多种创新方式被广泛使用。其中&#xff0c;最为典型…

audio2face 与ue5结合实时语音嘴型同步

audio2face部分 1.安装audio2face以及localserver 2.打开streamingplayer的demo场景 3.localhost/NVIDIA/Assets/Audio2face/blendshape_solve目录下找到male_bs_arkit.usd拖拽到场景 4.选中场景中的male_bs_arkit.usd将分页切换到A2F data convert分页 5.参数设置 6.设置…

mysql用户相关操作

一、如何查看系统存在多少用户&#xff1f; 相关命令&#xff1a; SELECT COUNT(*) FROM mysql.user; SELECT User FROM mysql.user; DESC mysql.user; 二、如何查看用户是否设置密码&#xff1f; 在 MySQL 中&#xff0c;用户密码是被加密的&#xff0c;不可以直接查看用户…

cmake构建一个项目,同时依赖一个静态库项目和一个动态库项目

目录切到build中&#xff0c;然后cmake ..&#xff0c;生成VS解决方案 chengChu 文件夹 SET(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) #windows构建动态库时 , 加上这个会生成dll文件的同时生成lib文件&#xff0c;否则只…

FirmAE源码粗读(五)

文章目录 简介参考阅读libnvramsem系列函数sem_getsem_locksem_unlock nvram_init系列函数nvram_initnvram_set_default 感言 简介 鸽王来咯 这一篇写的是FirmAE中源于firmadyne的libnvram&#xff08;经过了一定修改&#xff09;&#xff0c;不得不说这一部分是很有意义的工作…

国产32位MCU低成本烟机变频风机方案

家用油烟机主要由风机系统&#xff0c;控制系统&#xff0c;滤油装置&#xff0c;外壳和悬吊装置组成&#xff0c;其中风机系统是油烟机的心脏&#xff0c;通常由电机和叶轮组成&#xff0c;一台油烟机功率的大小&#xff0c;也是由风机系统决定的&#xff0c;控制系统是烟机最…

JVM-垃圾回收器

垃圾回收器 Serial 新生代垃圾回收器&#xff0c;单线程&#xff0c;会产生STW&#xff08;Stop The World&#xff09;&#xff0c;采用拷贝算法。 它在停止线程时&#xff0c;并不是直接将线程强行停止&#xff0c;而是等线程运行到一个安全点&#xff08;Safe Point&…

超级实用!详解Node.js中的lodash模块和async模块

文章目录 7. lodash 模块安装 Lodash数组处理对象处理函数式编程 8. async 模块安装 Async异步流程控制串行执行&#xff08;Series&#xff09;并行执行&#xff08;Parallel&#xff09;循环迭代&#xff08;Each&#xff09; 控制流程和错误处理瀑布流控制&#xff08;Water…

强化学习:策略梯度法

策略梯度法的思路 之前我们是用表格的形式来表达策略&#xff0c;现在我们同样可以用函数来表达策略。之前学的所有的方法都是被称为 value-based&#xff0c;接来下学的叫 policy-based 。接下来我们来看一下 策略梯度法的思路。之前学的的策略全都是用表格来表示的&#xff0…