簡體   English   中英

在ASP.NET Web Api中實現對Restangulars .several()方法的支持

[英]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) { ... }
}

現在這不會崩潰。 但是ida,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM