Python Falcon 后缀的响应器
为了理解后缀响应器的概念和需要,让我们定义一个 StudentResource 类。它由一个 on_get() 响应器组成,该响应器将学生的 dict 对象列表转换为JSON,并作为其响应返回。
我们还可以添加 on_post() 响应器,它从传入的请求中读取数据并在列表中添加一个新的 dict 对象。
使用Falcon’s App对象的 add_route() 函数,我们添加 /students 路线。
启动服务器后,我们可以从HTTPie命令行测试GET和POST请求—-。
再次调用 on_get() 确认增加了新的学生资源。
在这个阶段,我们希望在 StudentResource 类中有一个GET应答方法,从URL中读取id参数,并从列表中检索出一个相应的 dict 对象。
换句话说,格式为/student/{id}的URL应该与资源类中的GET方法相关。但显然,一个类不能有两个同名的方法。因此,我们定义在 add_route() 方法中使用 后缀 参数来区分 on_get() 响应器的两个定义。
通过指定 后缀=’student ‘,一个带有id参数的路由被添加到应用程序对象中 。
我们现在可以添加另一个定义 on_get( )方法的后缀,这样这个响应者的名字就是 on_get_student() ,如下所示
在添加新的路由和 on_get_student( )响应器后,启动 Waitress 服务器,并测试这个URL,如下所示
请注意,当客户端用适当的请求头请求 /students/{id:int} 这个URL路由时, on_put() 响应器(用于更新资源)和 on_delete() 响应器(用于删除资源)也将被调用。
我们已经添加了这个以student为后缀的路由。因此, on_put_student() 方法将路径参数解析为一个整数变量。具有给定id的项目的JSON表示被获取,并以PUT请求中提供的数据进行更新。
on_delete_student() 响应者只是删除了DELETE请求中指定的id的项目。剩下的资源列表将被返回。
我们可以用 HTTPie 命令测试API的PUT和DELETE操作—-。
这个API( studentapi.py )的完整代码如下