Цель состоит в том, чтобы эти четыре конечные точки:Web API действия маршрутизации
POST v1/invoices<br/>
POST v1/invoices/12345<br/>
POST v1/invoices/12345/attachment<br/>
POST v1/invoices/12345/image
маршрутизации записей:
routes.MapHttpRoute(
name: "InvoiceAttachments",
routeTemplate: "v1/invoices/{id}/attachments",
defaults: new { controller = "invoices", action = "PostAttachment" }
);
routes.MapHttpRoute(
name: "InvoiceImages",
routeTemplate: "v1/invoices/{id}/images",
defaults: new { controller = "invoices", action = "PostImage" }
);
Это мои четыре определения функции в контроллере:
[HttpPost]
[ActionName("PostAttachment")]
public HttpResponseMessage PostAttachment(int id)
[HttpPost]
[ActionName("PostImage")]
public HttpResponseMessage PostImage(int id)
[HttpPost]
public HttpResponseMessage Post(int id)
[HttpPost]
public HttpResponseMessage Post()
Однако, когда я отправляю счет-фактуру с использованием первого URI, маршрут, который распознается, является маршрутом вложений. Как у меня есть конечные точки с разными разделами после переменной ID?
Это не работает, когда я делаю/invoices/12345, он переходит к действию по умолчанию без переданного параметра id.:/ – NiX
@NiX - вы пытались изменить вышеуказанный DefaultAction, чтобы принять аргумент int id? 'Post (int id)' - в противном случае вы никогда не получите идентификатор, переданный в ... –
Да, и я только что понял, что забыл одну из нужных конечных точек: POST/v1/invoices поэтому мне нужно сообщение() и post (int id) – NiX