Web API路由约束HttpMethod中缺少补丁

Sta*_*ish 36 .net rest asp.net-mvc asp.net-web-api asp.net-web-api-routing

我正在使用.net Web API V1构建一些restful api.

我们正在尝试为web api定义一些路由.我在定义'Put'和'patch'的路线时遇到了一些问题.

它们具有相同的URL,唯一不同的是HttpMethod.在HttpMethod中,没有对Patch的支持http://msdn.microsoft.com/en-us/library/system.net.http.httpmethod(v=vs.118).aspx

config.Routes.MapHttpRoute(
    "UpdateCustomer",
    "api/customers/id/{id}",
    new {controller = "Customers", action = "UpdateCustomer"},
    new {id = @"\d+", httpMethod = new HttpMethodConstraint(HttpMethod.Put)}
);

config.Routes.MapHttpRoute(
    "PatchCustomer",
    "api/customers/id/{id}",
     new {controller = "Customers", action = "PatchCustomer"},
     new {id = @"\d+", httpMethod = new HttpMethodConstraint(HttpMethod.**Patch**)}
);
Run Code Online (Sandbox Code Playgroud)

Yis*_*zer 90

编辑:更新到最新版本的WebAPI目前5.2.7(https://www.nuget.org/packages/Microsoft.AspNet.WebApi/)

原版的:

如果你不能使用:

new HttpMethod("PATCH")

请参阅以下示例在Web API源代码中的使用

https://github.com/aspnetwebstack/aspnetwebstack/blob/master/src/System.Web.Http/HttpPatchAttribute.cs

  • 感谢您更新最新版本的链接。WebAPi 1.0 文档和问题仍然与处理遗留系统相关 - 正如您在上面所说的“如果可以的话”。 (2认同)