2012-06-26 41 views
1

我正在使用文檔中的REST指令在Cake2.1.3中編寫API。之前在Cake1.3中寫過一個,我將使用現在不推薦使用的cakeError類以它所請求的格式發出HTTP代碼的響應。例如,如果我請求http://example.com/widgets/view/invalid-code.json,cakeError會派發400錯誤代碼(和消息)以JSON格式。 Cake 2.x使用異常來處理這個問題。 According to the docsCakePHP 2.x異常可以以相同的請求格式響應嗎?

throw new BadRequestException() 

發出了「錯誤的請求」消息的400 HTTP代碼,但它似乎只在HTML格式這樣做。它可以自動以它所請求的格式進行響應嗎?

回答

3

雖然你可以用選定的答案來做,但更簡單的方法是讓Cake自動呈現它。 Cake在渲染異常時使用相同的視圖查找規則。這意味着只需在視圖中的Error文件夾中添加一個'json'文件夾,並創建相應的視圖文件。

/View 
    /Errors 
    /json 
     error404.ctp 
    error404.ctp 

的錯誤看法可能是一些簡單的,就像這樣:

<?php 

echo json_encode(array(
    'error' => array(
     'name' => $name, 
     'url' => $url 
    ) 
)); 

參觀然後/users/missing-page.json將呈現以下JSON:

{"code":404,"url":"\/users\/missing-page.json","name":"Action UsersController::missing-page() could not be found."} 
相關問題