如何使用webapp(+ Facebook身份验证)在App Engine服务器上实现RESTful API?

时间:2009-12-28 01:04:25

标签: google-app-engine

所以我的想法非常简单。但我不知道从哪里开始。

使用简单的webapp框架在我的应用引擎服务器上开发一个简单的RESTful API。

会有两种客户:
1.普通的PC用户访问facebook应用程序,这将直接将API调用发送到我的app引擎服务器。 (请注意,facebook应用程序本身托管在同一个应用程序引擎服务器上)

  1. Iphone用户通过Facebook连接访问我的应用引擎服务器。然后,用户可以自由地进行API调用。
  2. 所以我如何在http://code.google.com/p/app3/检查App3项目,然后没有真正的身份验证。

    有任何建议/想法吗?

    我对流程如何工作有一个大概的了解

    假设:我的数据存储区都设置了用户数据。

    对于访问我的FB应用的普通PC用户: - >在FB中进行身份验证 - >我使用gmemsess保存他们的用户ID + facebook_session_key - >我使用这两个数据来验证数据存储区中的用户数据 - >该用户现在可以在我的服务器上免费使用CRUD。

    对于iphone用户来说,这是一样的流程。但是使用Facebook Connect。

    CRUD应该类似于:   如果用户想要检查他/她的统计数据,API调用将是这样的:   /休息/ getstats

    有人真的这样做吗?我很欣赏每个人的见解。 一个简单,无障碍的解决方案将是非常棒的!

1 个答案:

答案 0 :(得分:3)

嗯,这可能不是你一直在寻找的,但这是我的尝试:

要在应用引擎上执行简单的REST,您可以尝试使用Jim Fulton的优秀库bobo(这里是link to the REST section of the documentation)。 Bobo是一个经过良好测试的简单软件包,只包含一个fily,bobo.py,因此它非常适合简约应用程序的需求。你可以简单地把它放在webapp上。

请注意,文档中显示的装饰器需要转换为python2.5样式才能工作,所以

@bobo.resource('/rest/getstats', 'GET')
def get_stats(self, request):
    "Get user's stats"

会变成

def get_stats(self, request):
    "Get user's stats"
get_stats = bobo.resource('/rest/getstats', 'GET')(get_stats)

等。这应该是一种简单的REST方法。

对于身份验证,您可以将repoze.who传递到WSGI管道中。有一些非常简单的repoze.who插件为facebook API在野外(不幸的是没有在pypi上),我为一个简单的Facebook应用程序前一段时间写了一个非常简单的。您可以查看here,以及简短的wiki和一些依赖图,这些图可能有助于保持您的应用轻量级和内存效率。 (请注意那里的依赖关系图:从那时起,一些Zope库已被简化;要使用Facebook身份验证,你只需要zope.interface。)

也许我没有真正给你任何特定的(或有用的),但这些只是你可以看一下的几个链接,它们可能派上用场。

相关问题