4

WebAPIConfig

config.Routes.MapHttpRoute(
     name: "TestApi",
     routeTemplate: "api/{controller}/{action}/{id}",
     defaults: new { id = RouteParameter.Optional }
);

我的 API 控制器:

public class TestController : ApiController
{
    [HttpPost]
    public string Send([FromBody] string id)
    {
        return "Got " + id;
    }
}

这一切都很好,直到我将PARAM “ID”的名称更改为让我们在我的 API 过程中说“输入”。

我的(错误)假设
我的印象是,通过将 {xx} 括号放在路由表 url 上,我们实际上是在声明将在请求调用中使用任何第一个参数。

根据我的小样本,这似乎不正确。

问题 1:
这是否意味着如果我有 10 个 API 方法(例如注册、登录、注销、发送电子邮件 ...)而不是标准默认值 get/post/put/delete ....我将需要 10 个单独的路由每个条目?

问题 2:
另外,我们如何在路由表上表示一个 API 需要一类 POCO 字段?我们是否在 MapHttpRoute 上声明了每个单独的字段名称?

4

1 回答 1

2

如果您将操作方法​​的id参数重命名为input,则对该操作的每次调用都必须在请求正文中传递一个名为input(而不是id!)的参数。

由于参数绑定基于匹配名称,因此您无法在不更新调用客户端的情况下重命名正文参数(如果可能的话)。但是,当您同时更新路由定义和相应操作方法的参数时,您可以重命名路由参数占位符。

于 2013-10-17T05:35:04.023 回答