如何使用具有Web Api 2的路由属性中的IEnumerable <mytype>?</mytype>

时间:2014-07-11 19:08:04

标签: asp.net-web-api2

在此场景中,我将什么放在路由属性的构造函数中?如果你知道有一篇文章在讨论这个问题,你可以给我发一个链接吗?

[RoutePrefix("api/MyApi")]
public class MyApiController : ApiController
{
    //What goes in here?
    [Route("")]
    public HttpStatusCode EditPermissions(IEnumerable<MyType> myTypes)
    {
        //stuff
    }

}

我的信息基于this article.

1 个答案:

答案 0 :(得分:1)

在这种情况下,您不会将数据放在路线中,因为这会使URL看起来很糟糕并且不灵活(也不适用于您的示例)。

在你的情况下,我会简单地命名这条路线&#34; edit-permission&#34;。

    [HttpPut, Route("edit-permission")] // The URL is then /api/MyApi/edit-permissions
    public IHttpActionResult EditPermissions([FromBody]IEnumerable<MyType> myTypes)
    {
        // Do stuff with myTypes
        return Ok("Editing permissions was a success!"); // Returns a 200 HTTP status code
    }

如果您将类型放在http请求正文中而不是URL中,并在控制器中使用IHttpActionResult(或HttpResponseMessage)类型,则WebApi框架会自动将正文映射到myTypes属性。