繁体   English   中英

将Post路由到非标准uri Web API

[英]Routing Post to a non standard uri web api

我正在编写REST Web API,我需要使用POST方法使端点类似于/ api / users / {id} / modifyhttp:// localhost:8080 / api / users / 6 / modify

我有一个具有所有读/写操作的UsersController类,但是我只能通过访问/ api / users而不是/ api / users / 6 / modify来访问post方法。 我需要扩展层次结构(如果说得好)。

我该怎么做呢?

您可以使用asp.net Web API的“ 属性路由 ”。

首先是通过asp.net web api模板中的HttpConfiguration启用它,您可以在WebApiConfig.cs文件上看到它。

using System.Web.Http;

namespace WebApplication
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API routes
            config.MapHttpAttributeRoutes();

            // Other Web API configuration not shown...
        }
    }
}

之后,您可以定义一个控制器,该控制器应继承自ApiController并可以使用Route属性定义示例的自定义路由:

[RoutePrefix("api/users")]
public class UsersController : ApiController
{
    [HttpPost]
    [Route("{id}/modify")]
    public HttpResponseMessage PostModify(int id) 
    { 
       // code ...
    }
}

RoutePrefix将为控制器上的所有操作定义一个前缀。 因此,要访问PostModify您应该在post操作中使用类似/api/users/6/modify的路由。 如果您不想要它,只需删除RoutePrefix并在route属性上定义完整的url,如下所示: /api/users/{id}/modify

您还可以保证定义这样的路由的id参数的类型:

[RoutePrefix("api/users")]
public class UsersController : ApiController
{
    [HttpPost]
    [Route("{id:int}/modify")]
    public HttpResponseMessage PostModify(int id) 
    { 
       // code ...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM