我用AngularJS來從服務器檢索對象的列表。服務器端正在使用Spring MVC。
所以,我想退回這些對象作爲JSON格式的名單,但是,我想,如果服務器coudn't檢索數據以任何理由返回一個信息性消息的對象。
我可以不用封裝列表<>,並在DTO(數據傳輸對象)的消息對象? 如何檢查AngularJS收到的JSON是否可以來自兩種不同的類型?
這裏是我的控制器類的片段。它目前返回我想要返回的MyType的列表。但想法是將其轉換爲泛型類型(Object,也許?),並根據具體情況從此請求返回列表或消息。
@RequestMapping(value = RestPaths.LIST_MYTYPE_BY_OWNER, method = RequestMethod.GET)
public @ResponseBody List<MyType> listByOwner(@RequestBody Owner o) {
List<MyType> myType = myService.list(o);
return myType;
}
這是諮詢控制器的服務。考慮到JSON可能具有不同的格式,我如何處理這些數據?
this.listMyType = function(ownerId){
var deferred = $q.defer();
$http.get('/rest/my/list_by_owner',{})
.then(function (response) {
if (response.status == 200) {
deferred.resolve(response.data);
}
else {
deferred.reject('Error retrieving list of myType');
}
});
return deferred.promise;
}
在'then'函數內有條件不會做任何事情,因爲狀態200以外的任何東西都不會觸發第一個'then'函數。它會觸發第二個參數函數或catch()。可以發送具有不同狀態的服務器端錯誤消息,並使用'then'拒絕處理程序來管理響應或發送'errors'屬性並檢查解析處理程序 – charlietfl
除狀態2xx以外的@charlietfl會更準確。 – zeroflagL
@charlietfl,感謝您的提示,但它不認爲問題的核心。 – marionmaiden