2015-05-15 79 views
1

我建立一個春天的REST類型的服務和我有一個基於給定的郵政編碼檢索位置目標以下方法:的方法類型的彈簧安置最佳實踐

@RequestMapping(value = "/placeByZip", method = RequestMethod.GET) 
public Place getPlaceByZipcode(@RequestParam(value="zipcode") String zipcode) { 
    Place place = placeService.placeByZip(zipcode); 
    return place; 
} 

它是最好的做法有返回類型「地方」的?我想這對於錯誤處理很困難?

回答

1

使用Spring的最新版本的對問題的REST Web服務我相信返回「對象」是很好的做法,因爲它可以讓你簡化你的代碼,具體你要返回什麼。我認爲這是強烈輸入您的API響應。

好的做法的錯誤處理是使用由彈簧提供的控制器建議效用。

有讀:

https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

這可以讓你在任何您服務層拋出你的異常,併產生一個很好的幫助的錯誤響應。

0

一個更好的做法是創建一個數據傳輸對象,只有你會使用在前端的性能。

以適當的JS框架,你可以很容易地做正確的錯誤處理。 (例如,您可以在AngjularJs中定義一個服務來定義DTO的字段)。

而且,你還不如回到placeService.placeByZip(郵政編碼);


由於robinsio建議添加控制器建議是一種很好的做法。您可以將狀態設置爲某些http代碼(例如HttpStatus.conflict)並擁有一個異常處理程序(例如BaseServiceException),如果您定義的某些驗證規則已損壞,則可以將其引入您的位置服務。

控制器建議可以以一致的方式返回一個你在相應http狀態代碼的情況下處理的地圖(假設模式出現在接口中以通知你從基本服務異常發送的消息)。