在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) { ... }
}

这样就不会崩溃了。而ida,b,c

我真的需要手动split字符串并从那里使用它吗?这也不适用于int类型。public HttpResponseMessage GetSingle(int id) { ... }

在ASP中实现.several()支持的正确方法是什么?. NET Web Api?我认为这是一个标准的REST调用,因为它在Restangular中。

在ASP中实现对reangulars .几个()方法的支持.. NET Web Api

使用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();
    // ...
}