【问题标题】:ASP.NET WebApi POST response URL or locationASP.NET WebApi POST 响应 URL 或位置
【发布时间】:2015-02-19 20:05:45
【问题描述】:

我希望结果 URL/位置为:api/orders/15 但是下面的代码给了我 api/orders?id=15

我应该改变什么来实现这一点?

[Route("api/orders", Name = "CreateOrder")]
public IHttpActionResult Post([FromBody] Order order)
{
   //...
   return CreatedAtRoute("DefaultApi", new { newOrder.Id }, newOrder);
}

这是在 App_Start 下定义的路由:

    config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}", new {id = RouteParameter.Optional});

【问题讨论】:

    标签: asp.net url asp.net-web-api asp.net-mvc-routing


    【解决方案1】:

    原来是属性路由 [Route("api/orders", Name = "CreateOrder")] 是罪魁祸首。它在那里是因为另一个动作(HttpGet)“偶然”拥有它。这会覆盖基于约定的路由,该路由会在响应位置提供正确的 URL。

    在我删除这两个操作的属性路由后,响应位置是基于基于约定的路由的正确格式。这解决了这个问题。但是,如果需要基于属性的路由,最好知道语法应该是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      • 2013-03-15
      • 2015-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多