WebAPIConfig
config.Routes.MapHttpRoute(
name: "TestApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我的APIController:
public class TestController : ApiController
{
[HttpPost]
public string Send([FromBody] string id)
{
return "Got " + id;
}
}
这一切都运行良好,直到我更改PARAM“ID”的名称,让我们在我的API程序上说“输入”.
我(错)的假设
我的印象是,通过在路由表url上放置{xx}括号,我们确实声明将从请求调用中使用任何第一个参数.
根据我的小样本,这似乎不正确.
问题1:
这是否意味着,如果我有10个API方法(如寄存器,登录,注销,sendemail …)而不是标准默认值get / post / put / delete ….我将需要10个单独的路由条目一?
问题2:
另外,我们如何在路由表上表示期望一类POCO字段的API?
我们是否在MapHttpRoute上说明每个人和单独的字段名称?
最佳答案 如果将操作方法的id参数重命名为input,则对此操作的每次调用都必须在请求主体中传递名为input(而不是id!)的参数.
由于参数绑定基于匹配名称,因此您无法在不更新调用客户端的情况下重命名正文参数(如果可能的话).但是,当您更新路径定义和相应的操作方法参数时,可以重命名路径参数占位符.