通常您以數據爲中心的格式勞逸結合。也就是說,JSON或XML。這些格式可以用簡單的方式表示數據,而不需要用戶可見標記的開銷。 HTML是標記,不適合數據表示。僅僅因爲這個事實,你不會在RESTful接口中看到HTML。
如果你想用你的REST API加載HTML,我只需要輸入text/html,然後把整個頁面放回去。因此包括頁眉,頁腳,導航等。沒有所有這些額外的元素,只有一個需要返回HTML:就是在XmlHttpRequests的情況下。
大多數發送XHR的JavaScript庫添加請求標頭X_REQUESTED_WITH
,其值爲XMLHttpRequest
。在你的應用程序中,你可以檢查這個標題,如果它被設置,你只能渲染「應用程序」表。
class SomeController extends AbstractActionController
{
protected $acceptCriteria = array(
'Zend\View\Model\JsonModel' => array(
'application/json',
),
);
public function apiAction()
{
$viewModel = $this->acceptableViewModelSelector($this->acceptCriteria);
// Potentially vary execution based on model returned
if ($viewModel instanceof JsonModel) {
// Do some JSON things
// Return the JSON
return $viewModel;
}
// Do some HTML things
$viewModel->setVariable('foo', 'bar');
// Render only this view model if it's a XHR
if ($this->getRequest()->isXmlHttpRequest()) {
$viewModel->setTerminal(true);
}
return $viewModel;
}
}
但是請記住,REST主要用於數據交換。如果你有一個REST api,你可以在它前面有一個客戶端將數據轉換成html。想想關於像Ember或Angular.js這樣的JavaScript MVC框架。
您可以將html與REST風格的API混合使用,但不要混淆太多。這很難,你不會成功。只有兩種不同的架構系統。
我認爲這是另一個概念,所以我引入了一個新的「管理」路線。 WDYT?所以現在: /applications - >只是應用程序列表 /applications/manage - >一個用於管理應用程序的頁面(crud鏈接列表和更多 /applications/id - >只是單個應用程序 /applications/id /編輯 - >編輯該應用程序的表格 /applications/create - >應用程序的新表格 所有的ApplicationsRestController公開了所有這些操作 – httpete
請記住,URL應該指向資源(名詞),而不是動詞。 ,這就是我發現自己正在做某些原因(例如鏈接下載)。儘量限制他們幾句話,我使用'編輯'而不是'管理','刪除'和'創建'。 – imel96