需要帮助。
我有2个控制器:
// POST (Single SMS)
[ActionName("AddSMS")]
public HttpResponseMessage Post(MySMS singleSMS)
{
try
{
SMS_Repository.Add(singleSMS);
return Request.CreateResponse<MySMS>(HttpStatusCode.Created, singleSMS);
}
catch (Exception)
{
return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Error");
}
}
// POST (Collection of SMSes)
[ActionName("AddSMSCollection")]
public HttpResponseMessage Post(List<MySMS> smses)
{
try
{
SMS_Repository.Add(smses);
return Request.CreateResponse<List<MySMS>>(HttpStatusCode.Created, smses);
}
catch (Exception)
{
return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "errorus");
}
}
和路线:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional, action = RouteParameter.Optional }
现在。如果我发送这样的请求:
本地主机:25856 / API / SMS / AddSMSCollection
它有效
是否可以调整路由以便我可以使用 localhost:25856 / api / sms 并且没有得到多个匹配请求错误的操作?
抱歉我的英语不好..答案 0 :(得分:1)
您可以定义在这种情况下应执行的操作:
defaults: new { id = RouteParameter.Optional, action = "AddSMS" }
但是只有以下网址localhost:25856/api/sms
并且不包含操作名称,我希望您意识到路由引擎无法消除执行哪个操作的歧义。路由引擎可以使用HTTP谓词,但在您的情况下,这两个操作都是POST。