Python Falcon 资源类
Falcon的设计借鉴了REST架构风格的几个关键概念。REST是 关系状态传输 的意思 。 REST定义了网络应用的架构应该如何表现。
REST是一种基于资源的架构。在这里,REST服务器所承载的一切,无论是文件、图像还是数据库中的表格行,都被视为一种资源,它可能有许多表现形式。REST API提供了对这些资源的控制性访问,这样客户端就可以检索和修改它们。
服务器上的资源应该只有一个统一资源标识符(URI)。它只识别资源;它不指定对该资源采取什么行动。相反,用户从一组标准方法中选择。对资源进行操作时要使用的HTTP动词或方法。POST、GET、PUT和DELETE方法分别执行CREATE、READ、UPDATE和DELETE操作。
Falcon使用普通的Python类来表示资源。这样的类在你的应用程序中充当控制器。它将传入的请求转换为一个或多个内部操作,然后根据这些操作的结果组成一个响应返回给客户端。
每个资源类都定义了各种 “响应者 “ 方法,每个资源允许的HTTP方法都有一个。响应者的名字以 “on_” 开头,并根据其处理的HTTP方法来命名,如 on_get()、on_post()、on_put() 等。
在上面使用的 hellofalcon.py 示例代码中, HelloResource (资源类)有一个 on_get() 响应器方法。响应者必须总是定义至少两个参数来接收Request和Response对象。
import falcon
class HelloResource:
def on_get(self, req, resp):
"""Handles GET requests"""
resp.status = falcon.HTTP_200
resp.content_type = falcon.MEDIA_TEXT
resp.text = (
'Hello World'
)
对于ASGI应用程序,响应者必须是一个轮回函数,即必须用 async 关键字定义。
class HelloResource:
async def on_get(self, req, resp):
"""Handles GET requests"""
resp.status = falcon.HTTP_200
resp.content_type = falcon.MEDIA_TEXT
resp.text = (
'Hello World'
)
Request对象 代表传入的HTTP请求。请求标题、查询字符串参数和其他与请求相关的元数据可以通过这个对象来访问。
响应对象代表应用程序对请求的HTTP响应。这个对象的属性和方法设置状态、头和正文数据。它还暴露了一个类似于dict的上下文属性,用于传递任意数据给钩子和其他中间件方法。
注意,上面的例子中的 HelloResource 只是一个普通的Python类。它可以有任何名字;然而,惯例是将其命名为 xxxResource 。