跳至主要内容

一个支持REST的请求,用于在repoze.bfg中实现RESTful应用程序

项目描述

介绍

repoze.bfg.restrequest 实现了4种额外的请求类型,用于与RESTful应用程序一起使用。

假设您想要为一种资源(由URL标识)创建单独的视图,并使用不同的HTTP方法。在一个默认的repoze.bfg项目中,例如,您可以这样编写

from repoze.bfg.restrequest import IGETRequest, IPOSTRequest
from webob import Response

def my_view_get(context, request):
    return Response("GET\n")

def my_view_post(context, request):
    return Response("POST "+request.body+"\n")

这定义了一个方法 my_view_get,在执行对该资源的 GET 请求时使用,以及在执行 POST 请求时使用 my_view_post。您可以使用 PUTDELETE 执行类似操作。

为了启用这些视图,您需要在 configure.zcml 中将它们连接,如下所示

<!-- include to activate the event handler for marking REST requests -->
<include package="repoze.bfg.restrequest" />

<bfg:view for=".models.IMyModel"
      request_type="repoze.bfg.restrequest.interfaces.IGETRequest"
      view=".views.my_view_get"
      />

<bfg:view for=".models.IMyModel"
      request_type="repoze.bfg.restrequest.interfaces.IPOSTRequest"
      view=".views.my_view_post"
      />

您可以使用 repoze.bfg.convention 来执行相同的操作,在这种情况下,您的视图将如下所示

from repoze.bfg.restrequest import IGETRequest, IPOSTRequest
from webob import Response

@bfg_view(request_type=IGETRequest, for_=models.IMyModel)
def my_view_get(context, request):
    return Response("GET\n")

@bfg_view(request_type=IPOSTRequest, for_=models.IMyModel)
def my_view_post(context, request):
    return Response("POST "+request.body+"\n")

请确保您仍然将 repoze.bfg.restrequest 包含在您的 configure.zcml 中。

测试您的应用程序

对上述内容的简单测试方法是启动您的应用程序,并使用 curl 查看不同方法的结果。

$ curl http://127.0.0.1:6543/
GET

$ curl http://127.0.0.1:6543/ -d "posttest"
POST posttest

变更日志

1.0 - 初次发布(2008年10月19日)

  • 初次发布

1.0.1 - 打包错误修复

  • 将HISTORY.txt移动到主目录,以便setup.py能够找到并打包它。

项目详情


下载文件

下载适用于您平台文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

repoze.bfg.restrequest-1.0.1.tar.gz (3.3 kB 查看哈希值)

上传时间

由以下支持