在ASP中实现对reangulars .几个()方法的支持.. NET Web Api
本文关键字:方法 支持 NET Api Web ASP 实现 几个 reangulars | 更新日期: 2023-09-27 17:51:11
我最近在Restangular中发现了一个方便的方法.several()
。它允许我获取多个单个对象,非常好。
所以我尝试了以下Restangular.several('accounts', 'a', 'b', 'c');
,它生成了这个url: /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不能区分动作:(
第二稿:
public class MyController : ApiController
{
public HttpResponseMessage GetAll() { ... }
public HttpResponseMessage GetSingle(string id) { ... }
}
这样就不会崩溃了。而id
是a,b,c
。
我真的需要手动split
字符串并从那里使用它吗?这也不适用于int
类型。public HttpResponseMessage GetSingle(int id) { ... }
.several()
支持的正确方法是什么?. NET Web Api?我认为这是一个标准的REST调用,因为它在Restangular中。
使用regex约束的属性路由可以在这里工作…
[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();
// ...
}