使用Skue或类似框架在google-app-engine上构建REST API

时间:2012-11-26 17:51:39

标签: google-app-engine rest python-2.7 google-cloud-endpoints

在搜索构建REST API的方法时,我找到了skue(https://code.google.com/p/skue/)。但是网站上的信息不多。我的计划是严格按照以下方式建立一个休息api:

Models << Business logics << Restful Resources.

这意味着:模型只能由business logic访问; restful resources接口是客户端可以直接访问的唯一层。我指的是这一切,以避免人们建议使用appengine-rest-server

我的问题是:有没有人成功使用过Skue?如果有,你有什么例子你不介意分享吗? GETPOST就足够了,但欢迎更多。如果不是Skue,是否有任何框架允许在google-app-engine之上构建此类rest-apis?

2 个答案:

答案 0 :(得分:3)

我是Skuë的作者。 Skuë在Bribrí中意为“mouse”,这是我国哥斯达黎加土着群体的语言。

我知道网站上的信息不足:(https://code.google.com/p/skue/)

对于想要在自己的项目中使用它的开发人员。对不起,我只是没有时间做适当的文档,因为这只是一个侧面项目而不是我的日常工作。

但是,我愿意帮助你提升,以便你能够使用它。首先要注意的是它是源代码的一部分的小例子。转到该站点,然后单击Source - &gt;浏览然后展开“app”分支。

“app”文件夹中的代码代表您自己的API实现。包“skue”包含库的实际实现,所以基本上你只需要为Google App Engine创建你的Python项目,并将skuë包直接包含在其中。

现在使用下载的main.py:main.py on Skuë project的内容覆盖您的main.py文件。

该文件最重要的部分是您将自己的路径放到资源实现中:请注意使用“ContactResource”。

TASK_HANDLERS = [

                ]

API_HANDLERS = [
                   ('/contacts/(.*)', ContactResource)
               ]

API_DOC = [ ('/', ApiDocumentationResource) ]

浏览联系资源实施。

引擎盖下有很多事情要发生......但你的想法是不要担心这些。

您需要从适当的Resource父类继承,具体取决于您要创建的资源类型,有四种基本类型:

DocumentResource:文档资源是一种类似于对象实例或数据库记录的单一概念。

CollectionResource:集合资源是服务器管理的资源目录。客户可以建议将新资源添加到集合中。但是,集合可以选择是否创建新资源。

StoreResource:商店是客户端管理的资源库。商店资源允许API客户端放入资源,让它们退出,并决定何时删除它们。

ControllerResource:控制器资源为程序概念建模。控制器资源就像可执行的函数,带有参数和返回值;输入和输出。

与传统Web应用程序使用HTML表单一样,REST API依赖于控制器资源来执行特定于应用程序的操作,这些操作无法逻辑映射到标准方法之一(创建,检索,更新和删除,也称为CRUD)。

现在看一下 ContactResource 示例中的“describe_resource”实现。当您从上述基本资源类型继承时,下一步是使用该方法以编程方式向外界描述您的资源。底层的Skuë实现使用该方法来验证require参数,并在对它们执行OPTIONS请求时自我描述端点。

最后一步是为您实现要为资源处理的方法(CRUD)。

再次使用ContactResource示例,该资源处理联系人项目的创建,更新和读取。

我希望这至少可以帮助您了解如何开始使用该库。不过,我将在未来创建更好的教程。

与此同时,您可以通过电子邮件与我联系: greivin.lopez@gmail.com ,我会向您发送更详细的示例,甚至是符合您要求的内容。

重要提示:目前,Skuë项目仅支持JSON格式的响应。如果您打算使用其他格式,则需要创建适当的类来处理它。

哥斯达黎加的问候。

答案 1 :(得分:1)

我没有使用过skue,但你所寻找的内容听起来非常适合Google Cloud Endpoints。有关详细信息,请参阅有关该主题的previous answers