如果您的疑慮是對真實的負責人。
然後,通常有4點要牢記:
- 基本URI Web服務
- 互聯網媒體類型由Web服務所支持的數據。
這通常是JSON,XML或YAML,但可以是任何其他有效的Internet媒體類型。
- Web服務使用HTTP方法 (例如GET,PUT,POST或DELETE)支持的一組操作。
- 的API都必須超文本驅動
見,http://en.wikipedia.org/wiki/Representational_state_transfer瞭解更多詳情。
現在,有了這個說法,我建議改變你的上面的代碼,以接近下面的僞代碼。
1)資源的存在是關鍵,將您的帖子看作是可以通過URI訪問的資源集合。(認證授權&其他顧慮,你也可能要處理):
api.domain.com/resources/posts =>此URI指向帖子
2)集合的一組操作中你將要使用的HTTP方法以支持/動詞需要定義,作爲一個例子,我們可能想通過這樣做只獲得一個集合的成員:
api.domain.com/resources/posts/12
以下是請求標題&身體,可以在傳入中找到請求該URI:
接受:應用/ JSON
內容類型:應用程序/ JSON
請求URL:http://api.domain.com/resources/posts/12
請求方法:GET
你的應用程序應該能夠處理這種類型的請求,而不需要規定URI中的操作,使我們回到點(1),
而不是以這種方式寫的URI:
domain.com/api/posts/ 所有
你的URI應該是模型是這樣的:
資源/職位/ 12作爲資源/類型/項從集合中檢索一個成員,
資源/職位作爲資源/類型與整個集合一起工作。
這裏的代碼示例:
常見的抽象類 在這裏,你可以實現一些常見的任務。 如果您正在使用基於服務的實施 這也可以通過服務來完成。
abstract class ResourcesController extends AppController {
}
class PostResourcesController extends ResourcesController {
/**
* By the time this method is called in your controller/class, you already know
* that the HTTP method is GET.
*
* @param Request\$_GET $request A request instance
* @param int $postId The post ID to retrieve
*
* @return Response A reponse instance
*/
function getPost(Request $Request, $postId = null)
{
/**
* Here you can use the request object to get
* the response content type
* the requesting client accepts. Example JSON or XML.
*/
/**
* using the $postId you can then query your database
* to retrieve a post with that ID or use a sort of
* service.
*/
/**
* Once you implemented a you logic
* you can build a response to return.
*/
}
}
此代碼是不完整的,但我希望它給你 的什麼是真正的RESTful的API可能看起來像的想法。
它確保
「應用程序可以通過了解兩件事情與資源進行交互的關鍵:資源的標識符和所需的操作」。
希望這有助於。
如果您在PhoneGab應用程序中使用Sencha Touch,還可以使用[Ext.Direct實現](http://banchaproject.org)而不是RESTful。 – 2013-05-19 15:50:11