我想在我的api上使用GET方法,其中一个方法是带路径参数的路径:
API /人/ {PERSONID}
和一个带有查询参数的路线:
API /人?文本=东西
但如果我把这段代码:
// GET: api/people/{personId}
[Route("api/people/{personId}")]
[HttpGet]
public HttpResponseMessage Get(long personId)
{
}
// GET: api/people?text=something
[Route("api/people")]
[HttpGet]
public HttpResponseMessage Get(string text)
{
}
然后尝试打开 / api / people / 1 它说错误的格式,当我尝试打开 / api / people?text = something 时,它会起作用。< / p>
我只定义了默认路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我怎样才能让他们都工作?定义如果它是一个路径参数转到第一个,如果它是一个查询参数转到第二个?
答案 0 :(得分:4)
我只是使用Web API 2将它放入Visual Studio 2015中,它运行正常。我必须添加以下行(每个控制器方法一行)。
return Request.CreateResponse(HttpStatusCode.OK);
我也吹走了默认路由配置。以下网址工作得很好
http://localhost:64377/api/people/1
http://localhost:64377/api/people?text=Hello
当我将这些URL放在IE中时,我在控制器中点击了两个方法。