它的東西是經常討論。你所說的兩件事情都是完全有效的,但有不同的實施方式,優點和缺點。
實現1
使用HTTP方法(POST,GET,PUT ...)你userAction功能區分什麼事情你想(創建,讀取,更新中...)。
例如http://example.com/api/user/peter:
function userAction()
{
$method = $this->getRequest()->getMethod();
switch ($method)
{
case 'POST':
// Create peter user
break;
case 'GET':
// Read peter user
break;
case 'PUT':
// Update peter user
break;
case 'DELETE':
// Delete peter user
break;
}
}
實現2
使用Zend公司型動物在你apiController行動(postAction()的getAction()...)來確定的,如果你想創建,閱讀,更新...用戶。在這種情況下,您需要在Method的API中確定您想要執行的操作。
我建議使用「api」作爲MODULE和「user」作爲CONTROLLER,它將更具可擴展性。例如:
獲得由一組名稱
URL: http://example.com/api/user/peter
MODULE: api
CONTROLLER: user
ACTION: index
PARAM: peter
。在這種情況下確定的用戶也可能是combinate更多的GET參數,可以像網頁或每頁:
URL: http://example.com/api/user/peter?page=1&pagesize=25
MODULE: api
CONTROLLER: user
ACTION: index
PARAM: peter,page,pagesize
刪除一個給定的用戶
URL: http://example.com/api/user/peter/delete
MODULE: api
CONTROLLER: user
ACTION: delete
PARAM: peter
編輯給定用戶
URL: http://example.com/api/user/peter/edit
MODULE: api
CONTROLLER: user
ACTION: edit
PARAM: peter
我們使用刪除或編輯URL中的詞來確定我們想要執行的操作。這是需要定義正確的路線和區分網址。
總之我更喜歡使用實現2. API的方法更容易理解和乾淨,你的代碼不會變得更復雜。
如果你想在其他API實現挖知道他們是如何做到這一點,我建議你看看Stack Exchange API
參見[這裏](http://www.restapitutorial.com/lessons/httpmethods.html)以及[這裏](http://www.restapitutorial.com/lessons/restquicktips.html)。整個網站,真的。 –
如果您在ZF2中編寫REST API,請考慮Zend編寫的[Apigility](https://apigility.org/)。 – AlexP