2014-07-21 32 views
3

我在工作中主要處理REST json API。所以我對他們很熟悉。但對於我自己的項目,我正在嘗試應用引擎,因爲我相信它非常適合。何時使用。 ProtoRPC或REST

我已經開始在python(使用ferris)中編寫自己的邏輯,並且在閱讀關於應用程序引擎的更多信息時,我遇到了protorpc和雲端點。但是在大多數我讀過的例子中,他們看起來和我在休息api中做的一樣。用json發出請求,並返回一個json響應。或者是一個錯誤。

我看到的主要區別在於,在休息時,端點基於資源。而HTTP周圍的動詞如GET,POST,PUT,DELETE等。在RPC中,每個請求都有它自己的端點,而不是基於資源或模型。

這兩個請求,並與JSON響應。所以我認爲我沒有看到使用Google端點的好處。他們是否提供其他一些好處?我可能會看到更好的端點跟蹤分析。但是我是否仍然需要使用post http動詞來修改內容?

如果我使用某些框架,會發生這種變化嗎?像Django。雖然我目前正在測試出具有處理protorpc的消息系統的Ferris。雖然,我還沒有休息或尚未休息。

那麼我錯過了什麼?終結點相對於使我的對象方法處理json請求有什麼好處。套接字連接是否可以播放?

回答

4

您可以使用endpoints來製作RESTful API。

protorpc/endpoints不會奇蹟般地使您的API RESTful。 必須在endpoints框架內使您的API RESTful,該框架使用protorpc

使用endpoints的好處是,您可以輕鬆完成許多認證工作(假設您要使用Google帳戶),爲您完成序列化/反序列化,您可以爲您的客戶端庫生成你,並且不僅僅是一個Javascript客戶端可以被支持。如果這些東西聽起來不錯,endpoints可能適合你。如果這些東西不適用,那麼可能會更直接並使用RequestHandlers。

我能用endpoints製作一個簡單的API。它有3個主要資源:記錄,數據集和移動。 A對象是最小的數據單位。 Dataset對象是一組記錄。而Move對象代表Dataset變更位置的事件。 我的REST風格的URI是這樣的:

GET /records  # Get list of records 
GET /records/<id> # Get single record 
POST /records  # Create records 

GET /datasets  # Get list of datasets 
GET /datasets/<id> # Get single dataset 
POST /datasets  # Create dataset 

GET /moves   # Get list of moves 
GET /moves/<id> # Get single move 
POST /moves   # Create move 

有了這個,我可以創建數據,組織並四處移動它。我能夠在App Engine的endpoints框架內完成此操作,並且它是RESTful。

+0

這幾乎是我走過的路,最好的工作。然而,我最終並未最終使用應用程序引擎,只是開始使用計算機,所以我可以使用python 3並對主機系統有更多的控制權。現在,我正在努力使碼頭工人做得更好。但是這是答案,如果我再次使用appengine,我會怎麼做。 – skift