我創建一個REST API,我一直在玩允許來自客戶端的請求的捆綁銷售的想法。通過捆綁銷售,我的意思是他們可以發送一個包含多個「真實」請求的請求,並將它們一起交付給客戶。通常是javascript ajax請求。事情是這樣的:捆綁API請求
POST /bundlerequest
["/person/3243", "/person/3243/friends", "/comments/3243?pagesize=10&page=1", "/products", "/product/categories" ]
(捆綁的要求只能是GET請求,截至目前至少) 這是爲了恢復這樣的事情
{
"success" : ["/person/3243", "/person/3243/friends", "/comments/3243?pagesize=10&page=1", "/products", "/product/categories" ],
"error" : [],
"completiontime" : 94,
other relevant metadata...
"responses" : [
{"key" : "/person/3243" , "data" : {"name" : "John", ...} },
{"key" : "/person/3243/friends" , "data" : [{"name": "Peter", "commonfriends" : 5, ...}] },
etc...
]
}
好處的這種捆綁是它減少了請求的數量,這對於移動設備尤其重要。
所以我的第一個問題是,是我的做法就是一個很好的一個?有沒有人有過這樣的經歷?
AFAIK解決這個問題的常見方法是編寫服務器端代碼來返回組合數據,我相信這是與客戶端相關的。 (例如,twitter用戶流就是這樣做的,它結合了人員信息,最新推文,最新個人消息等)。但是這使得API非常有見地,當客戶端需要更改時,服務器可能需要更改以適應優化。
而第二個問題是如何實現這一點?
我的後端是ASP.NET MVC 3和IIS 7.我應該在應用程序中實現它嗎?有一個bundlerequest動作可以在內部調用請求中指定的其他動作?
難道直接IIS 7中實現?編寫一個透明地截取/ bundlerequest請求的模塊,然後調用所有相應的子請求,使應用程序完全不知道發生的綁定?這也可以讓我以應用程序不可知的方式實現這一點。
這聽起來很酷。 –
所有這些url只會返回JSON嗎?或者有些可能會返回HTML partials和其他東西? –
@DarinDimitrov是JSON而已,但是我看到被記錄的用戶退出或沒有訪問API部分地區的實例,然後可能會被重定向到一個登錄頁面潛在的問題。這些都是我必須解決的問題。 –