2012-02-26 77 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