的目標是讓這四個端點:的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)' - 否則你永遠不會得到一個ID傳入... –
是的,我只是意識到我忘了一個想要的端點: POST/v1/invoices 所以我需要一個職位()和一個帖子(int id) – NiX