Web API 2 默认路由方案

本文关键字:路由 方案 默认 API Web | 更新日期: 2023-09-27 18:32:40

这个问题突然出现在我的脑海中。

Startup.cs我有:

HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
app.UseWebApi(config);

当我有这样的方法时:

[RoutePrefix("api/Order")]
public class OrderController : ApiController
{
    // don't use any attribute here
    public IHttpActionResult HelloWorld()
    {
        ...
        return Ok();
    }
}

  1. 是否可以访问HelloWorld()
  2. 是否应该发送GETPOST或任何操作?

Web API 2 默认路由方案

如果您将

方法重命名为:GetHelloWorld(),则可以使用 GET 访问HttpWorld()。与 POST 重命名为 PostHelloWorld() 相同。

但我更喜欢使用[HttpGet][HttpPost],...属性,即使我的操作方法的名称中包含"Get"或"Post"字符,也可以避免可能的错误。

更新

在做了一些测试后,我意识到我对此的评论是不可能称之为HelloWorld的,这是不正确的。事实上,如果你对http://<YourProjectUrl>/order进行 POST 调用,就可以调用你的 HelloWorld() 方法。

因此,默认方法将是 POST,并且由于您尚未为操作方法配置任何路由(考虑到 RoutePrefix 只是一个前缀,因此需要考虑路由属性),它将获取您的控制器名称而不带"控制器"(OrderController -> Order)。