Python Falcon 错误处理

Python Falcon 错误处理

为了处理各种错误情况,可以对响应对象使用上述状态代码。Falcon还提供了一组错误类。当相应的运行时错误情况出现时,它们的对象可以被提出。

这些错误类是由 HTTPError 类作为基类派生出来的。错误对象被引发,如下例所示

import falcon
class MyResource:
   def on_get(self, req, resp):
      # some Python code
      raise falcon.HTTPBadRequest(
         title="Value Out of Range",
         description="The value is not between permissible range"
      )

预定义的错误类别

Falcon提供的一些预定义的错误类别如下

  • HTTPBadRequest – 400 Bad Request。由于客户端错误,如请求语法不正确、请求信息框架无效等,服务器无法处理该请求。

  • HTTPInvalidHeader – 导致400坏请求,因为请求中的一个标头是无效的。

  • HTTPInvalidParam – 代表400坏请求。这个错误可能是指查询字符串、表单或文件中的一个无效参数,该参数与请求一起提交。

  • HTTPMissingParam – 当请求中缺少一个参数时,会引发00坏请求。

  • HTTPForbidden – 服务器理解该请求但拒绝授权。状态代码是403 Forbidden。

  • HTTPNotFound – 当服务器没有找到目标资源的当前表示,会引发404状态代码。它并不表明这种缺乏代表性是暂时的还是永久的。

  • HTTPMethodNotAllowed – 405方法不被允许。请求行中收到的方法不被目标资源所支持。

  • HTTPLengthRequired – 当服务器拒绝接受没有定义Content- Length的请求。411 长度要求。错误代码。

  • HTTPUnsupportedMediaType – 如果起源服务器拒绝为请求提供服务,因为有效载荷的格式不被目标资源的这种方法所支持。相等的状态代码是415不支持的媒体类型。

  • HTTPUnprocessableEntity – 如果服务器理解请求实体的内容类型,并且请求实体的语法是正确的,但是无法处理所包含的指令,那么提出的错误状态码是422 Unprocessable Entity。例如,如果一个XML请求体包含格式正确,但语义错误的XML指令。

  • HTTPTooManyRequests – 当用户在给定的时间内发送了太多的请求(”速率限制”),就会引发429个请求过多的状态代码。

  • HTTPInternalServerError – 一个非常常见的错误情况,导致500内部服务器错误。服务器遇到了一个意外的情况,使其无法完成请求。

  • HTTPNotImplemented – 501(未实现)状态代码表明服务器不支持完成请求所需的功能。当服务器不能识别请求方法,并且不能支持它的任何资源时,这是适当的响应。

  • HTTPServiceUnavailable – 503服务不可用意味着服务器目前无法处理该请求,原因是临时超载或计划维护。

  • MediaNotFoundError – 400错误请求。这个异常是由媒体处理程序在试图解析一个空主体时引发的。

  • MediaMalformedError – 400错误的请求。这个异常是由媒体处理程序在试图解析一个畸形的主体时引发的。

重新定向

还有一组异常,当它们被引发时,会触发对客户端的重定向响应。这些状态代码是3xx类型的。这些异常由下面的类表示,作为 HttpError 的子类,对请求的处理进行了循环

  • HTTPMovedPermanently – 301永久移动。这个状态代码表明目标资源已经被分配了一个新的永久URI。

  • HTTPFound – 302发现状态代码,意味着目标资源暂时停留在一个不同的URI下。

  • HTTPTemporaryRedirect – 该类引发307(临时重定向)状态代码,这意味着目标资源暂时停留在不同的URI下,如果用户代理执行自动重定向到该URI,则不得改变请求方法。

  • HTTPPermanentRedirect – 导致ib 308永久重定向,表示目标资源已经被分配了一个新的永久URI。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程