這似乎是一種常見的情況,所以我一直在尋找這樣的問題,但我找不到它。我在ASP.NET中構建了一個RESTful Web API。我有兩個相關的表格:照片和PhotoGroups。照片表有一個PhotoGroupID列,它與PhotoGroups中的同一列相關。在我的AngularJS單頁應用程序中,我使用標準RESTful查詢從兩個表中檢索數據。我正在顯示網頁佈局中列出的照片,其中一列是PhotoGroupID,數字如1,2,3和4.因此,如何通過加入圖片來顯示這些組的名稱而不是這些數字以REST風格進行兩次查詢?我知道如何在Web API中添加一個新方法,使我能夠加入數據,但這在RESTful的意義上看起來並不自然。在AngularJS的客戶端執行此操作的常用方法是什麼?是否有某種連接兩個表的過濾器,或者某種特殊語法將列綁定到PhotoGroup名稱列?在將來顯示相關表格的信息時,我會碰到類似的情況,我想以正確的方式做到這一點。如何在REST風格的Web API中加入相關數據?
0
A
回答
0
我開始通過向我的Web API添加一個新方法來解決這個問題,該方法加入了Photos和PhotoGroups表,但我很快意識到我將返回一組匿名對象。要解決這個問題,需要聲明一個包含我想返回的列的新類。這似乎比REST的美觀和簡單複雜得多。
所以我考慮了AngularJS中的替代方案,並決定我可以編寫一個自定義過濾器,使用我已經在控制器範圍內擁有的PhotoGroups JSON數組,將PhotoGroupID轉換爲GroupName。下面顯示了實現該解決方案的代碼。這有點麻煩,但不是很好,它使Web API保持簡潔。
in Filter.js:
angular.module('PhotoFilters', []).filter('groupName', function()
{
return function (input, scope)
{
var groupName = "Not Found";
angular.forEach(scope.PhotoGroups, function (group)
{
if (group.PhotoGroupID == input)
{
groupName = group.GroupName;
}
});
return groupName;
};
});
in my HTML table:
<td>{{ x.PhotoGroupID | groupName:this }}</td>
相關問題
- 1. REST風格的Web服務發佈API
- 2. CherryPy和REST風格的Web API
- 3. REST風格的Web服務和RESTful API
- 4. 關於REST風格的Web服務
- 5. 具有關聯的REST風格的Web API。可能嗎?
- 6. iPhone中的REST風格的Web服務:未插入數據庫的數據
- 7. REST風格的Web服務加載數據infile MYSQL
- 8. 如何構建REST風格的API
- 9. 如何使用REST風格的API
- 10. 如何在REST風格的Web服務中描述輸入參數
- 11. Grails中的REST風格的Web服務
- 12. REST風格的API和rails
- 13. REST風格的API架構
- 14. Symfony2 REST風格的API + AngularJS
- 15. 的風格通過REST API
- 16. REST風格的API設計
- 17. REST風格的API和Userfrosting
- 18. 使用MVC Web API的REST風格的API的教程系列
- 19. 如何測試REST風格的Web服務性能
- 20. REST風格的Web服務中的@POST
- 21. CakePHP中的REST風格的Web服務
- 22. WebFaction中的Python程序的REST風格的Web服務或API
- 23. 設置REST風格的Web服務
- 24. 如何在Lotus Notes中使用REST風格的Web服務
- 25. REST風格的web api中的URI設計
- 26. 使用HTTP的URI在REST風格的Web API
- 27. 如何保護REST風格的Web服務(PROVIDER)
- 28. 在REST風格的Web服務中添加刪除方法
- 29. 放而$ http.get在agular JS從REST風格的API獲取數據
- 30. REST風格的Grails:我如何在XML中包含相關實體?
你能不能一個列表屬性添加到PhotoGroups。那麼當你打開/查看一個攝影組時,它會拉下該組內的所有照片?然後,您可以訪問該組信息以及該組內的所有照片。 –
Dylan
我的看法是,您有API處理照片和PhotoGroups之間的關係,並避免第二次調用API。如果您擔心處理可能對錶格造成負面影響的更新,那麼我將使用適當的映射來實現DTO,從而將任何實體從更新中排除。我不認爲這違反了一個寧靜的API的精神。 – jbrown
關於這個話題有一個很好的複合視頻:https://wildermuth.com/2015/07/22/Mapping_Between_Entities_and_View_Models –