2010-12-15 56 views
0

不是一個很好的標題,但我正在尋找更多的指導,已經搜索了不少。我正在構建一個帶有MVC框架的Web應用程序(但我認爲這是一個更通用的問題)。我試圖製作很多視圖來執行很多AJAX風格的調用,並說我有一個用戶站點,他們可以將文件夾和文件添加到他們的配置文件頁面。因此,URL,也許喜歡:REST/JSON/MVC返回值

/profile/{id}

我有一個檔案控制器,它返回一個包含各種信息的視圖。我希望配置文件中列出的文件和文件夾是動態的,所以我想通過AJAX調用來填充它。我想我會喜歡

/listFolders/{userId}

/listFiles/{folderId}

一個URL是否合理有這些URL返回一個JSON對象,這兩個網址,甚至不提供HTML視圖(因爲對於瀏覽器來說,視圖只是整個配置文件頁面)?另外,如果用戶/文件夾不存在或當前登錄的用戶無法訪問數據,應該返回哪些錯誤?設置404或403 HTTP錯誤代碼是否合理?還是需要返回某種HTML?如果有多種原因會導致失敗,我想通過它呢?我應該隨意選擇HTTP錯誤代碼還是定義像0,1,2等整數返回碼?另外,如果URL指定它們是JSON,如listFoldersJSON而不是listFolders

回答

0

我在以前的項目中使用過JSON。對於錯誤,我們返回錯誤代碼。

我們決定這樣做是因爲我們正在處理API客戶端。所以我們想要處理錯誤代碼(REST基於HTTP,因此返回錯誤代碼是合適的)。

由於您正在編寫自己的應用程序,因此幾乎可以選擇將錯誤發送到視圖的方式。你可以創建一個錯誤的json對象,並且在視圖中你必須檢查這個對象是否爲空。

幾乎在一個if-else在視圖中。否則,您可以返回錯誤代碼並在將JSON呈現爲您想要的任何視圖之前檢查代碼。

我會去錯誤代碼,因爲它符合REST哲學。

+0

你是在談論HTTP錯誤代碼(如404,403等)或用戶定義的,如0,1, 2等?感謝您的回覆! – user98978979 2010-12-15 02:04:41

+0

HTTP錯誤代碼。 REST基於純HTTP。 – 2010-12-15 02:29:56

0

一般來說,我通過在狀態消息中引發500個內部服務器錯誤來處理這種情況。大多數客戶端庫如jQuery提供內置與故障回調處理錯誤,如:

jQuery.ajax({ 
    success:function(response){ 
     //do some success stuff 
    }, 
    error:function (xhr, ajaxOptions, thrownError){     
     //handle error 
     alert(xhr.responseText); 
     }  
}); 
0

這是完全可行返回JSON對象,而不是實際的看法。

就url而言,您可以使用listFolders和listFiles,而不必考慮JSON。不過,爲了服務器的安裝方式,我建議您使用小寫的網址。例如,我知道在Apache上有時listFiles會很好,但是listfiles會導致缺頁異常。

關於錯誤:您可以在您的JSON響應中設置一個排序頭並使用任何您想要的系統。例如,你可以不喜歡

status_code: 0 //where 0 means successful 
status_detail:success! 

哪裏,如果是STATUS_CODE其他東西比0,你會檢查status_detail並知道要忽略的響應裏面的一切。

0

此外,如果用戶/文件夾不存在或當前登錄的用戶無法訪問數據,我應該返回哪些錯誤?

這些都是基本的HTTP錯誤代碼:

  • 401:未經授權
  • 404:找不到

有錯誤消息的HTTP規範整體轉換: HTTP Status Code Definitions


另外,如果URL指定它們是JSON,就像listFoldersJSON而不是listFolders?

一般來說,處理一個很好的辦法就是爲客戶設置了「接受」頭有點像「文/ JSON」或「文本/ XML」和服務器將它解析出與迴應正確的迴應。這樣你可以使用相同的URL,但發送不同的數據視圖(如果你想要的話)