首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Requests库(五)接口返回状态码

Requests库(五)接口返回状态码

作者头像
雷子
发布2021-03-15 16:28:44
发布2021-03-15 16:28:44
4.6K00
代码可运行
举报
运行总次数:0
代码可运行

由于微信公众号推送改为了信息流的形式,防止走丢,请给加个星标 ⭐,你就可以第一时间接收到本公众号的推送!

Requests库分享系列:

Requests库(一)

Requests库(二)

Requests库(三)如何获取接口传参参数

Requests库(四)如何传递不一样的参数

这次是第五讲。接口返回状态码。


接口请求,返回的状态码肯定是不一样的,我们需要提前处理,不然就会报错。不信你可以看看下面代码的执行。

代码语言:javascript
代码运行次数:0
运行
复制
import requests
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36',

}
r=requests.post("https://mp.weixin.qq.com/sdaasd",headers=headers)
print(r.json())

我们看下接口的返回

接口返回异常了,那么我们看看状态码。

怎么获取状态码? 其实很简单的。

代码语言:javascript
代码运行次数:0
运行
复制
r.status_code 

返回如下

那么我们如果按照正常的去处理,而不是事先去处理接口的状态码。我们的接口可能请求就会出错了。那么我们应该先知道状态码有哪些,才可以更好的来判断?

状态码一共有5种。

代码语言:javascript
代码运行次数:0
运行
复制
分类  分类描述
1**  信息,服务器收到请求,需要请求者继续执行操作
2**  成功,操作被成功接收并处理
3**  重定向,需要进一步的操作以完成请求
4**  客户端错误,请求包含语法错误或无法完成请求
5**  服务器错误,服务器在处理请求的过程中发生了错误

具体的状态码列表如下

代码语言:javascript
代码运行次数:0
运行
复制
状态码  状态码英文名称  中文描述
100  Continue  继续。客户端应继续其请求
101  Switching Protocols  切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200  OK  请求成功。一般用于GET与POST请求
201  Created  已创建。成功请求并创建了新的资源
202  Accepted  已接受。已经接受请求,但未处理完成
203  Non-Authoritative Information  非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204  No Content  无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205  Reset Content  重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206  Partial Content  部分内容。服务器成功处理了部分GET请求
300  Multiple Choices  多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301  Moved Permanently  永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302  Found  临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303  See Other  查看其它地址。与301类似。使用GET和POST请求查看
304  Not Modified  未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305  Use Proxy  使用代理。所请求的资源必须通过代理访问
306  Unused  已经被废弃的HTTP状态码
307  Temporary Redirect  临时重定向。与302类似。使用GET请求重定向
400  Bad Request  客户端请求的语法错误,服务器无法理解
401  Unauthorized  请求要求用户的身份认证
402  Payment Required  保留,将来使用
403  Forbidden  服务器理解请求客户端的请求,但是拒绝执行此请求
404  Not Found  服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405  Method Not Allowed  客户端请求中的方法被禁止
406  Not Acceptable  服务器无法根据客户端请求的内容特性完成请求
407  Proxy Authentication Required  请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408  Request Time-out  服务器等待客户端发送的请求时间过长,超时
409  Conflict  服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410  Gone  客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411  Length Required  服务器无法处理客户端发送的不带Content-Length的请求信息
412  Precondition Failed  客户端请求信息的先决条件错误
413  Request Entity Too Large  由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414  Request-URI Too Large  请求的URI过长(URI通常为网址),服务器无法处理
415  Unsupported Media Type  服务器无法处理请求附带的媒体格式
416  Requested range not satisfiable  客户端请求的范围无效
417  Expectation Failed  服务器无法满足Expect的请求头信息
500  Internal Server Error  服务器内部错误,无法完成请求
501  Not Implemented  服务器不支持请求的功能,无法完成请求
502  Bad Gateway  作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503  Service Unavailable  由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504  Gateway Time-out  充当网关或代理的服务器,未及时从远端服务器获取请求
505  HTTP Version not supported  服务器不支持请求的HTTP协议的版本,无法完成处理

大家最常见的是 200,404,405,403,500,501,502,503,504等。我们只需要掌握常用的即可。那么我们回到我们的示例种,看我们应该如何处理呢。

这样很简单,我们只需要对常见的这些代码进行处理即可。我一般会这么处理。

代码语言:javascript
代码运行次数:0
运行
复制
import json
import requests
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36',

}
r=requests.post("https://mp.weixin.qq.com/sdaasd",headers=headers)
if r.status_code==200:
    print(r.text)
elif r.status_code==404:
    print("页面丢失")
elif r.status_code==403:
    print("服务端拒绝请求")
elif r.status_code==405:
    print("请求方式错误")
elif str(r.status_code).startswith('5'):
   print("服务器处理出错")
else:
    print("请求出现错误,状态码是:{}".format(str(r.status_code)))

其实处理很简单,对于在正常的接口请求中,我们可以稍微多的处理下。或者在日志中输出,在实际的测试中,对于状态码的处理也是有必要的。大家在使用Requests请求时,请求后,对状态码要进行一定的处理,无论是在接口测试还是在爬虫中使用,增加来程序的健壮性。


我是雷子。如果感觉本文对你有帮助,请点亮在看,记得点赞。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档