【问题标题】:Attribute Routing and CreatedAtRoute属性路由和 CreatedAtRoute
【发布时间】:2015-03-22 23:06:46
【问题描述】:

我正在尝试将我的 Web Api 项目转换为使用属性路由。我不明白的一件事是 POST 请求的 CreatedAtRoute 方法。在我的 WebApiConfig.cs 中,我曾经有一个

config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/account/{accountId}/site/{siteId}/visitor/{visitorId}/session/{sessionId}/{controller}/{action}",
            defaults: new { action = RouteParameter.Optional }
        );

我认为它不再需要它,但CreatedAtRoute 想要路线的名称并且找不到它。那么属性路由是如何处理的呢?

【问题讨论】:

    标签: c# asp.net-web-api asp.net-web-api-routing


    【解决方案1】:

    好的......一旦你看到发生了什么,这很容易。在属性路由中,您必须指定路由的名称以检索资源。所以在我的 GET 操作中,它看起来像这样:

    [Route("{sessionId}",Name="GetSession")]
        [ResponseType(typeof(Session))]
        public async Task<IHttpActionResult> Get(HttpRequestMessage request, int accountId, int siteId, Guid visitorId, Guid sessionId)
    

    然后在 POST 操作中将 CreatedAtRoute 更改为:

    return CreatedAtRoute("DefaultApi", new
            {
               controller: "session"
                visitorId = session.VisitorId,
                sessionId = session.SessionId
            }, session);
    

    到这里:

    return CreatedAtRoute("GetSession", new
            {
                visitorId = session.VisitorId,
                sessionId = session.SessionId
            }, session);
    

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2014-06-18
      • 2014-08-27
      • 2013-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多