`

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

阅读更多

         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
分享到:
评论

相关推荐

    django-rest-framework解析请求参数过程详解

    ### Django REST Framework...通过上述介绍可以看出,在Django REST framework中处理各种类型的请求参数非常灵活和方便。开发者可以根据具体的应用场景选择合适的方法来处理请求参数,从而提高代码的健壮性和可维护性。

    django rest framework入门.zip

    **Django REST Framework入门教程** Django REST Framework(简称DRF)是一个强大的、灵活的、用于构建Web APIs的工具包,它基于Python和Django框架。这个入门教程将引导你了解如何利用DRF来创建高效且易于理解的...

    django rest framework 自定义返回方式

    通过这种方式,我们可以为Django Rest Framework的API提供自定义的返回格式,包括状态码和消息,这使得前后端之间的通信更加清晰和高效。这种方法特别适用于需要在API中明确表示成功或失败的场景,以及需要在前端...

    自定义Django_rest_framework_jwt登陆错误返回的解决

    在开发基于Django的Web应用时,为了实现前后端分离并提供RESTful API,开发者常常会采用Django Rest Framework(DRF)结合JSON Web Tokens (JWT)进行身份验证。JWT是一种轻量级的身份验证机制,它允许服务器生成一个...

    Django REST 异常处理详解

    在Django REST框架中,异常处理是至关重要的,因为它确保了在出现错误时,系统能够以规范、统一的方式向客户端返回错误信息。本文主要讲解Django REST框架如何处理异常,以及如何自定义异常处理机制。 首先,Django...

    django rest framework 数据的查找、过滤、排序的示例

    Django Rest Framework(DRF)是一个强大的、灵活的工具,用于构建Web API,它建立在Django框架之上。本文将介绍如何使用DRF实现数据的查找、过滤和排序功能,这对于开发基于Web的后端管理系统尤为关键。通过本示例...

    浅谈Django REST Framework限速

    通过对Django REST framework限速机制的学习,我们可以有效地管理API接口的访问量,提高系统的稳定性和安全性。限速不仅可以帮助开发者保护后端资源免受攻击,还可以确保API的公平使用,为所有用户提供一致的服务...

    Demo.django-restful-api

    在"Demo.django-restful-api"项目中,你可以深入学习如何使用Django Rest Framework构建RESTful API,包括数据验证、权限控制、过滤、分页和序列化等核心概念。这个项目对于任何希望构建基于Python的Web服务接口的...

    Django使用rest_framework写出API

    在Django中构建RESTful API,开发者经常使用Django Rest Framework(简称DRF),这是一个强大的、灵活的工具,用于快速开发高质量的Web API。本文将详细介绍如何使用Django Rest Framework创建一个用户注册API。 ...

    Python-drfchaos用于测试DjangoRest框架API的装饰器工具集

    例如,`@response_status`装饰器可以随机改变HTTP状态码,`@delay`可以添加随机延迟,`@exception`则可触发指定或随机的异常。 2. **概率控制:** 这些装饰器通常带有概率参数,允许开发者设定混乱发生的概率。这样...

    django-react-auth:一个简单的django项目,实现了rest框架并对身份验证做出React

    4. **RESTful API**: 了解 REST 原则,如资源(Resources)、HTTP 方法(GET, POST, PUT, DELETE 等)、状态码(Status Codes)和 URI 设计。 5. **身份验证与授权**: JWT(JSON Web Tokens)或者 Token-based 认证...

    django rest framework get 添加自定义参数的两种方式

    在Django REST Framework中,有时候我们可能需要在`GET`请求中添加自定义参数,以满足特定的查询需求。默认情况下,DRF是基于模型(Model)来定义查询字段、搜索字段和排序字段的,但当需要根据其他字段进行筛选或...

    django_rest_api:这是关于学习Django Rest API框架

    在本文中,我们将深入探讨Django REST API的核心概念、关键组件以及如何使用它来构建实际的API应用。 首先,我们需要理解REST(Representational State Transfer)架构风格。REST是一种面向资源的架构设计,它鼓励...

    Python-djangoguardianDjango12实现了单个对象权限

    `django-guardian`与DRF(Django Rest Framework)可以很好地集成,通过自定义权限类或在视图中进行权限检查。 ```python from rest_framework.permissions import DjangoObjectPermissions from rest_framework....

    django ajax异步请求Django的Ajax库3813428.zip

    对于复杂的API需求,可以使用Django REST Framework(DRF),它提供了更强大的工具来处理Ajax请求,包括序列化、权限控制、分页和过滤等功能。安装DRF后,可以创建API视图、序列化器和URL路由。 综上所述,Django与...

    Django REST框架创建一个简单的Api实例讲解

    在本文中,我们将深入探讨如何使用Django REST框架在Python中创建一个简单的API。Django REST框架是一个强大的工具,它使开发RESTful API变得更加容易,适用于Web服务和移动应用程序之间的数据交互。 首先,让我们...

    django rest framework之请求与响应(详解)

    - 使用`Response`对象返回数据,并通过`status`参数设置HTTP状态码。 #### 四、总结 通过上述介绍可以看出,Django REST Framework 在处理请求与响应方面提供了非常强大且灵活的功能。无论是对于初学者还是经验丰富...

    Django REST framework 单元测试实例解析

    这篇文章主要介绍了Django REST framework 单元测试实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 环境 Win10 Python3.7 Django2.2 项目 参照...

Global site tag (gtag.js) - Google Analytics