【发布时间】:2015-10-07 22:08:30
【问题描述】:
我想在我的 api 上获取方法,一个带有路径参数的 Route:
api/people/{personId}
还有一个带有查询参数的Route:
api/people?text=something
但如果我输入这段代码:
// 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 时,它可以工作。
我只定义了默认路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我怎样才能让它们都工作?定义如果是路径参数转到第一个,如果是查询参数转到第二个?
【问题讨论】:
-
将
long更改为int会发生什么? (出于好奇)。不过,好问题。我不确定答案(还)。我不会认为您在查看此代码时会遇到任何问题。 -
我已经用 Web API 2.2 测试了这个确切的场景并且它可以工作。我认为您使用的是旧的 Web API 版本。
-
@JayMee
long或int结果是一样的 -
@WouterHuysentruit 我将 Web API 2.2 与 Microsoft Visual Studio Ultimate 2013 一起使用,但它不起作用。
-
正如B先生在他的回答中所说,我也没有包括手动路线,也许这是问题所在?
标签: c# rest asp.net-web-api