Исправление ограничения маршрутизации веб-API отсутствует в HttpMethod

Я создаю спокойный API, используя .net Web API V1.

Мы пытаемся определить маршрутизацию для веб-API. У меня возникла проблема с определением маршрута для «Положить» и «патч».

У них один и тот же 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**)}
);

person Stay Foolish    schedule 12.05.2014    source источник


Ответы (1)


РЕДАКТИРОВАТЬ: обновить до последней версии WebAPI в настоящее время 5.2.7 (https://www.nuget.org/packages/Microsoft.AspNet.WebApi/)

ОРИГИНАЛ:

Если вы не можете использовать вместо этого:

new HttpMethod("PATCH")

См. следующий пример использования в исходном коде веб-API.

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

person Yishai Galatzer    schedule 12.05.2014
comment
На этом этапе вам действительно следует перейти как минимум на Web API 2.23 (если вы можете) - person Yishai Galatzer; 21.04.2017
comment
Ссылка не работает. PATCH был добавлен как свойство в .NET Core, начиная с версии 2.1, но по-прежнему не доступен как свойство ни в Standard, ни в Framework. [docs.microsoft.com/en-us/dotnet/api/ - person joynoele; 04.01.2019
comment
Эльза. Почему вы до сих пор используете WebAPI 1.0? Это уже древний софт :). Обновил битую ссылку - person Yishai Galatzer; 05.01.2019
comment
Спасибо за обновление ссылки до последней версии. Документация и вопросы по WebAPi 1.0 по-прежнему актуальны для работы с устаревшей системой - как вы сказали выше, если можете. - person joynoele; 07.01.2019