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();
}
}
- 是否可以访问
HelloWorld()
? - 是否应该发送
GET
或POST
或任何操作?
如果您将
方法重命名为:GetHelloWorld()
,则可以使用 GET 访问HttpWorld()
。与 POST 重命名为 PostHelloWorld()
相同。
但我更喜欢使用[HttpGet]
,[HttpPost]
,...属性,即使我的操作方法的名称中包含"Get"或"Post"字符,也可以避免可能的错误。
更新
在做了一些测试后,我意识到我对此的评论是不可能称之为HelloWorld的,这是不正确的。事实上,如果你对http://<YourProjectUrl>/order
进行 POST 调用,就可以调用你的 HelloWorld() 方法。
因此,默认方法将是 POST,并且由于您尚未为操作方法配置任何路由(考虑到 RoutePrefix 只是一个前缀,因此需要考虑路由属性),它将获取您的控制器名称而不带"控制器"(OrderController -> Order)。