[英]Implement support for Restangulars .several() method in ASP.NET Web Api
我最近在Restangular中找到了方便的方法.several .several()
。 這使我可以獲取多個單個對象,非常好。
所以我嘗試了以下Restangular.several('accounts', 'a', 'b', 'c');
生成此網址: /api/accounts/a,b,c
這與我的ASP.NET Web Api控制器配合得不太好。 第一稿:
public class MyController : ApiController
{
public HttpResponseMessage GetAll() { ... }
public HttpResponseMessage GetSingle(string id) { ... }
public HttpResponseMessage GetMultiple(IEnumerable<string> ids) { ... }
}
從我的角度來看,這將是理想的控制器。 但是,它失敗了,並說MVC無法區分actinos :(
第二稿:
public class MyController : ApiController
{
public HttpResponseMessage GetAll() { ... }
public HttpResponseMessage GetSingle(string id) { ... }
}
現在這不會崩潰。 但是id
是a,b,c
。
我真的需要手動split
字符串並從那里開始使用它嗎? 同樣,這不適用於int
類型。 public HttpResponseMessage GetSingle(int id) { ... }
在ASP.NET Web Api中實現.several()
支持的正確方法是什么? 我認為這是標准的REST調用,因為它位於Restangular中。
具有正則表達式約束的屬性路由可以在這里工作...
[Route("api/my")]
public HttpResponseMessage GetAll() {
// ...
}
[Route("api/my/{id:regex(^[^,]+$)}")]
public HttpResponseMessage GetSingle(string id)
{
// ...
}
[Route("api/my/{ids:regex(,)}")]
public HttpResponseMessage GetMultiple(string ids)
{
// strings
var idList = ids.Split(',');
//// ints
// var idList = ids.Split(',').Select(i => Convert.ToInt32(i)).ToList();
// ...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.