Django: 路由与视图 互动版

REST API示例

我们先通过一个实例:使用类实现一个REST API,来更深入地体会使用类 实现视图所带来的变化。

示例API的定义如下:

对于URL/user/,当使用GET方法请求时,应当返回用户清单,而当使 用POST方法请求时,应当创建一个新用户:

URL METHOD 说明
/user/ GET 返回全部用户
/user/ POST 创建新用户

先看实现代码的类图:

rest-api-demo

基类EzView主要负责三件事:可调用实现、根据HTTP方法进行请求分发、提供默认处理方法。 我们在EzView中主要实现两个方法:

  • __call__() - 使类的实例可调用,在这个方法内,我们根据请求的HTTP方法 ,将请求分发到不同的处理方法
  • default_handler() - 默认的处理方法。如果请求的HTTP方法在类中未实现, 就调用这个方法

IndexViewUserView都继承自基类EzView,因此在这两个类中,只需要实现 针对不同HTTP方法的处理函数。

修改示例代码,创建一个EzView的继承类ReportView:

1.当用户使用GET方法访问/report/123/时,返回Hi, this is report 123

2.当用户使用DELETE方法访问/report/123/时,返回你想删除我吗?