通过django-rest-framework中的status模块来学习HTTP状态码

本文探讨了Django REST Framework(drf)中的status模块,介绍了如何利用该模块来理解和处理HTTP状态码。文章首先阐述了HTTP状态码的不同范围及其含义,接着展示了如何通过status模块进行状态码的验证。此外,还列出了一些常见的HTTP状态码,并推荐了相关资源深入学习。
摘要由CSDN通过智能技术生成

         Django下面有一个特别实用的框架,就是django-rest-framework,用它你可以写出更符合restful标准的api,本篇会通读django-rest-framework下的status模块来学习http返回的状态码是如何定义的,如果你正在写API相关的接口,本篇文章对你会有一定的帮助,希望你能够通读下去。


在开始之前我们需要安装一下django-rest-framework的框架:

  1. pip install djangorestframework

状态码范围的定义

HTTP状态码分为1xx,2xx,3xx,4xx,5xx,那么每个范围代表什么意思呢?如下表,我已经把它列出来了

范围描述
1xx信息
2xx成功
3xx重定向
4xx客户端错误
5xx服务端错误

然而,在status模块中,为我们提供了几个方法用来验证此状态码是否是这个错误,比如说,我使用requests模块请求了某个网站,然后我要判断是否请求成功,因为要根据不同的结果做不同的事情,实例代码如下:

  1. from rest_framework import status
  2. import requests
  3. # 定义一个URL
  4. URL ='https://blog.ansheng.me'
  5. # 发送一次请求
  6. result = requests.get(URL)
  7. # 如果返回值是成功的状态码就输出
  8. if status.is_success(result.status_code):
  9. print('请求成功!')
  10. # 在发送一个请求
  11. ret = requests.get(URL +'/hello')
  12. # 如果返回值是客户端错误的就输出
  13. if status.is_client_error(ret.status_code):
  14. print('客户端出错!')

返回结果如下:

  1. /Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5/Users/ansheng/MyPythonCode/code.py
  2. 请求成功!
  3. 客户端出错!
  • 源码是怎么干的?

如果你要问我是怎么知道状态码范围的定义的,那么我只能告诉你,源码告诉我了,所以我知道了。

  1. def is_informational(code):
  2. return code >=100 and code <=199
  3. def is_success(code):
  4. return code >=200 and code <=299
  5. def is_redirect(code):
  6. return code >=300 and code <=399
  7. def is_client_error(code):
  8. return code >=400 and code <=499
  9. def is_server_error(code):
  10. return code >=500 and code <=599

常用的HTTP状态码

发现如果要一个一个的说明每个状态码是干什么使的,会浪费很多的精力去看这些不是那么重要的问题,所以我会把几个常用的状态码列举出来,然后剩下的我会推荐几篇文章,如果你真的感兴趣(虽然不推荐这么做,浪费时间)

状态码描述
200请求处理成功
201当服务端根据客户端的请求创建了新的资源后会返回该状态吗
202根据客户端的请求修改数据时(如果是一个异步的操作,不能确保次修改一定成功)
400客户端发送过来的参数出现了问题
401用户验证失败,指访问该资源需要身份验证,但客户端提供的Token貌似是错误的
403访问的资源是存在的,但是该资源仅允许指定的用户或者IP访问
404要访问的资源不存在
405如果一个资源仅允许GET方法来进行资源的获取,那么你用POST/PUT/DELETE等方法进行访时,是不允许的
500服务器内部错误
502代理访问后端服务无响应
504代理访问后端服务超时,与502一样

推荐的一些资源。

  1. See RFC 2616 - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
  2. And RFC 6585 - http://tools.ietf.org/html/rfc6585
  3. And RFC 4918 - https://tools.ietf.org/html/rfc4918
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值