gpt4 book ai didi

asp.net - 为什么 REST API get 调用会调用错误的方法?

转载 作者:行者123 更新时间:2023-12-02 15:46:06 24 4
gpt4 key购买 nike

我的 API Controller 中有 2 个 get 方法,一种不接受参数,另一种接受整数参数。

API页面的路径是/api/contact。当我导航到此处时,页面按预期显示。

但是,当我将路径更改为 /api/contact/4 以尝试调用接受整数参数的 get 方法时,代码只调用相同的 get 方法,没有任何参数。我通过设置断点和调试来知道这一点。出了什么问题?

public PhoneInfo[] Get()
{
return contactRepository.GetAllContacts();
}

public PhoneInfo[] Get(int phn)
{
return contactRepository.GetMessages(phn.ToString());
}

最佳答案

WebApi 基于反射工作,这意味着 global.asax/routing 配置中的花括号 {vars} 必须与方法中的相同名称匹配。

默认情况下,您的 global.asax 将如下所示:

RouteTable.Routes.MapHttpRoute(name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional });

因此,为了匹配上面的 id 作为 var 存在的 url 为 api/contact/{id} 的方法,需要这样声明:

   public string Get(int id)
return "test";
}

在您的示例中,您将参数的默认名称从 id 更改为 phn ,导致 WebApi 无法找到您的方法。

另一个选择是使用RouteAttribute:

 [Route("api/contact/{phn}"), HttpGet]
public string Get(int phn)
return "another value";
}

关于asp.net - 为什么 REST API get 调用会调用错误的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37308452/

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