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”的 NAME ,让我们在API程序中说“输入”。
MY(错误)假设
我的印象是,通过在路由表url上放置{xx}括号,我们确实声明将从请求调用中使用任何第一个参数。
根据我的小样本,这似乎不正确。
问题1:
这是否意味着,如果我有10个API方法(如寄存器,登录,注销,sendemail ...)而不是标准默认值get / post / put / delete ....我将需要10个单独的路由条目一个?
问题2:
另外,我们如何在路由表上表示期望一类POCO字段的API?
我们是否在MapHttpRoute上声明每个人和单独的字段名称?
答案 0 :(得分:2)
如果您将操作方法的id
参数重命名为input
,则每次调用此操作都必须传递一个名为input
的参数(不是id
!)请求正文。
由于参数绑定基于匹配名称,因此您无法在不更新调用客户端的情况下重命名正文参数(如果可能的话)。但是,当您更新路径定义和相应的操作方法参数时,可以重命名路径参数占位符。