的目标是让这四个端点:的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