2012-02-26 76 views
25

我正在研究一个涉及Google AppEngine PAAS的移动和Web客户端的项目。我想用我的AppEngine应用程序使用RESTFul web服务。AppEngine的RESTFul服务框架

我已经看过Stackoverflow以引用RESTFul服务框架,它可以与AppEngine一起用于Web(GWT)和移动(Android)客户端。尽管Restlet似乎为AppEngine,GWT和Android提供了版本,但到目前为止,我已将其降至RestEasy,这主要是由于此question

以前一直存在的问题是discuss RESTFul frameworks,但我不认为这种比较适用于这种现在很常见的情况。听听有经验的开发人员对这套平台的可用框架以及优点和缺点的看法是有帮助的。

+0

我一直愉快地使用RestEasy的AppEngine上大部分的一年。 – 2012-02-26 23:57:19

+0

我已经在App Engine,GWT和Android上使用了Restlet约6个月。有关详细信息,请参阅我的答案(http://stackoverflow.com/questions/9348616/restful-webservices-on-google-app-engine/9352079#9352079)。 – 2012-02-27 13:06:31

+0

另外,Restlet家伙最近发布了他们未来活动的路线图,这可能会影响您的评估。请参阅http://blog.restlet.com/2012/02/25/the-road-ahead-from-noelios-to-restlet/ – 2012-02-27 13:13:03

回答

36

您不妨考虑使用Google Cloud Endpoints,它被宣布为在谷歌I/O应用程序引擎为信任的测试功能,现在提供给大家。借助端点,您可以注释简单的Java(或Python)类和方法来描述您的API。例如,这是一个简单的类来获取和检索一个井字游戏高分列表:

@Api(name = "tictactoe") 
public class ScoreEndpoint { 
    @ApiMethod(name = "scores.get") 
    public Score get(@Named("id") String id) { 
    PersistenceManager pm = getPersistenceManager(); 
    Score score = pm.getObjectById(Score.class, id); 
    pm.close(); 
    return score; 
    } 

    @ApiMethod(name = "scores.list") 
    public List<Score> list() { 
    PersistenceManager pm = getPersistenceManager(); 
    Query query = pm.newQuery(Score.class); 
    return (List<Score>) pm.newQuery(query).execute(); 
    } 
} 

特点

  • 支持Java和Python运行
  • 建立在Google的API基础架构上 - 它可以与许多用于Google自己的API的相同工具和库一起工作,如APIs ExplorerAPIs Console
  • 自动生成的,Android和iOS静态类型的客户端库 - 这些库都使用相同的谷歌创作JavaObjective-C库,你会用它来访问其他谷歌提供的API,如日历API
  • 动态类型的JS客户端库 - 再次,相同的库用于访问其他谷歌提供的API在JS
  • 内置支持OAuth的2
  • 集成与谷歌Eclipse插件 - 这使得您可以自动创建基于模型的API或App Engine应用程序以支持现有的Android应用程序
  • 支持本地开发 - 您可以使用App Engine开发环境构建和测试API,就像其他应用程序一样App Engine功能

了解更多

退房的documentation,详细了解使用端点。

您还可以从谷歌I/O看几次谈话:

+0

注册参加Trusted Tester计划,从我看到的情况来看,这似乎是继续向前发展的方式 – 2012-08-10 02:09:09

+0

从其他客户端(如.Net)进行连接怎么样? – 2013-10-05 17:55:45

+0

Endpoints的初始版本主要针对移动客户端(JS,Android,iOS),但.NET也应该可以使用https://code.google.com/p/google-api-dotnet-client/ – 2013-10-07 20:12:01

0

如果您正在查看GAE,您可能会考虑的一个选择是duyproject。它是openid库知道的,但它对于REST servlet也有一个非常轻量级的库。而GAE则希望保持所有的库文件清晰,以免超出字节限制。

2

我尊重你的决定不使用的Restlet,但该线程的其他浏览器,我已经能够使与Android /的Restlet/GAE岗位工作 - 和我的知识和编程技能是相当有限。我有一些问题让Restlet Edition for Javascript能够正常工作(它仍然处于早期开发阶段),但Restlet for Android并没有带来任何我能记得的问题。

+1

有点无关......但从我迄今为止的经验。Restlet已经成为一种痛苦,与GAE和Android并不是一回事,但一旦GWT进入混合,它开始给出莫名其妙的问题 – 2012-07-17 05:43:13

+0

我并不是Restlet API的狂热粉丝,例如http头是痛苦的,但这是Restlet的哲学,从Http中抽象出来!无论如何,另一个痛点是冷启动时间。你认为Cloud Endpoints会更好吗?他们可能会做相同的jar扫描,由于注释 – ZiglioUK 2013-11-12 00:42:55

1
+0

我在过去三年中一直在App Engine上使用Restlet。 – ZiglioUK 2013-11-12 00:40:16

+0

Restlet具有相当高的启动时间,我的需求非常基础。我很好奇Cloud Endpoints如何与Restlet进行比较,更快?其他区别? – ZiglioUK 2013-11-12 00:41:11