如何区分查询参数和路径参数

时间:2015-10-07 13:53:41

标签: c# rest asp.net-web-api

我想在我的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 }
    );

我怎样才能让他们都工作?定义如果它是一个路径参数转到第一个,如果它是一个查询参数转到第二个?

1 个答案:

答案 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中时,我在控制器中点击了两个方法。