【问题标题】:Web API routing constraint Patch missing in HttpMethodHttpMethod 中缺少 Web API 路由约束补丁
【发布时间】:2014-06-29 06:31:15
【问题描述】:

我正在使用 .net Web API V1 构建一些宁静的 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**)}
);

【问题讨论】:

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


    【解决方案1】:

    编辑:更新到当前最新版本的 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

    【讨论】:

    • 你现在应该至少迁移到 Web API 2.23(如果可以的话)
    • 链接已损坏。从 2.1 开始,PATCH 已作为属性添加到 .NET Core 中,但在 Standard 和 Framework 中似乎仍不能作为属性使用。 [docs.microsoft.com/en-us/dotnet/api/…
    • Elsa - 你为什么还在使用 WebAPI 1.0?这是现在的古老软件:)。更新了断开的链接
    • 感谢您将链接更新到最新版本。 WebAPi 1.0 文档和问题仍然与处理遗留系统相关 - 正如您在上面所说的“如果可以的话”。
    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 2022-10-18
    • 2018-12-12
    • 2013-08-26
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多