2012-10-04 99 views
1

我有一個應用程序,其中來自數據庫的信息作爲JSON響應發回。標準化JSON響應

調整jQuery端來處理每一個響應似乎是很多努力的一點適應性。

JSON格式可以通過什麼方式標準化?另外,有沒有辦法在jQuery中「插入」處理程序?

我一直沿着這樣的線路在想:

{ 
"replyCode": "OK"/"Error", 
"replyMessage": "Operation successful"/"Could not connect", 
"returnData": ... // Entities go here 
} 
+0

你可以給我們提供一個可以做一個響應的代碼的例子,並且談一談你的回答中的差異是什麼? – BobS

回答

2

標準化JSON響應是需要爲每個應用程序定製的;只有您有必要的數據才能確定應該支持哪些操作以及它們如何通過JSON進行通信。例如,在過去,我使用了「響應嗅探器」邏輯(其中處理程序檢查響應中的特定屬性並處理以特定方式存在的每一個屬性)和「命令列表」邏輯(在這種情況下,響應總是包含描述必須採取的特定操作的對象數組,並且處理程序執行它們)。

我不認爲在大多數情況下回復代碼和消息是必要的,因爲HTTP響應頭可以有效地傳達此信息。無論你決定做什麼,.ajaxComplete(和它的兄弟姐妹.ajaxSuccess.ajaxError

可以用來對每個請求的完成運行客戶端安裝全球應對處理程序。

1

爲什麼沒有一箇中心函數,它的JSON的最終回顯的響應。

function returnJSON($code,$data=array()){ 
    echo json_encode(
    array(
     'replyCode'=>$code, 
     'replyMessage'=>getReturnMessageByCode($code), 
     'returnData'=>$data 
    ) 
); 
} 

現在在每一個AJAX的結束給你打電話讓來獲取這些數據,你的PHP代碼會做這樣的事情 -

$data = fetchData(); 
if ($data){ 
    returnJSON('OK',$data); 
}else{ 
    returnJSON('FAIL'); 
} 
exit(); 

標準化您的回覆是一個偉大的想法,也是你的責任。除非你的框架有其他選項,否則你的使你的代碼儘可能健壯。

2

首先,你應該真的看看從apigee球員的視頻RESTful API Design。它包含大量針對RESTful API的良好建議。布賴恩馬洛伊也給出了反饋應該如何的反饋。

接下來,您應該看看PHP中的一些庫來開發RESTful API。其中一些爲您提供瞭如何返回響應的可靠方法。

有了這個,你應該很好的去精心打造RESTful API中。