gpt4 book ai didi

c# - 为什么仅某些操作需要 HttpGet?

转载 作者:太空狗 更新时间:2023-10-29 22:58:29 25 4
gpt4 key购买 nike

让我先概括一下情况:

我有一个基本的 Controller ,如下所示:

public class SearchRequestController : ApiController
{
public IEnumerable<ObjectA> GetAllRequests() {...}
{}
public IEnumerable<ObjectA> GetLatestRequest() {...}
{}
}

使用下面的路由

    public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}

我可以很容易地使用下面的功能

 Http://myServer/myvirtualdirectory/api/SearchRequest/GetAllRequests
Http://myServer/myvirtualdirectory/api/SearchRequest/GetLatestRequest

现在我想添加以下 Controller

 public class UserController : ApiController
{
public IEnumerable<UserObject> SearchUsersByInput() {...}
}

但是下面的GET不行

 Http://myServer/myvirtualdirectory/api/User/SearchUsersByInput

I'm getting a 405: {"Message":"The requested resource does not support http method 'GET'."}

但是,当我按如下方式更改我的功能时,它会起作用:

 public class UserController : ApiController
{
[HttpGet]
public IEnumerable<UserObject> SearchUsersByInput() {...}
}

问题:有人可以解释这种行为的起源吗?我做错了什么或者我的路由有问题吗?

最佳答案

请引用帖子here

您将看到您可以使用命名约定(这就是名称中带有 Get 的方法起作用的原因),或者您可以通过使用正确的 HTTP 属性装饰操作来显式指定操作的 HTTP 方法。

关于c# - 为什么仅某些操作需要 HttpGet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com