GAE restful interface for javascript

经常遇到需要用js存取数据的时候,比如GM脚本,Opensocial/facebook app,各种工具用途的js插件、游戏,以及纯html+js/flash的网站应用。使用cookie和其他一些本地存储的方式有很大局限,opensocial之类容器网站提供的在线存储不好用,而且功能弱,容量小。如果能方便的用类似SQL的方式存取数据,就舒服多了。OpenResty就是这样一个接口,作者基于html+js+OpenResty+db这种富有创意的架构,实现了他的blog等应用。

我之前弄一个GAE应用的时候,就有用到js跨站到GAE存取数据,由于我对免费午餐确实比较有兴趣,这几天有空,就把它抽出来,包装成了一组通用的接口GAE-DJ。可以用js(or your server)调用RESTful接口进行插入,修改,删除,查询。接口是参考REST/JSON风格,模仿OpenResty的方式实现的。插入一次只能一条记录,查询只能基于一个字段,可以>, <, =, IN,功能还远没有OpenResty那么丰富。接口细节见README

数据操作的权限是用GAE基于google帐户的用户系统控制的,数据读写修改都可以设置为所有人/创建者/model所有者。不过建议尽量减少控制,这样就不需要去GAE登陆了。默认权限是all可读可写,创建者(要先登录再创建)可修改删除,类似blog comment的策略。

另外我还包装了GAE的fetch url api,这样通过GAE作为proxy,js可以变得十分犀利,不但可以抓网页,还可以发POST/PUT/DELETE之类的请求,甚至还可以加额外的header。

至于js客户端,我写了一个gae-dj.js,可以用它来跨站调用这些接口。

数据操作的demo
抓网页的demo
Source on git
Test server on GAE