HTTPGET查询字符串

时间:2018-06-12 02:50:57

标签: c# asp.net-core

没有名称但有值的网址是否仍被视为查询字符串?

例如:

[HttpGet]
[Route("api/house/{Id}")]
public IActionResult GetHouseById(int Id)

链接将是: http://localhost:44565/api/house/1

这仍然是一个查询字符串吗?

1 个答案:

答案 0 :(得分:2)

不,这是路径的一部分,在RESTful命名法中不是查询字符串参数。

路径变量是路径的必需组件,必须提供以识别适当的路径。在路径需要时省略id参数应该导致404(除非另一个路由匹配api/house)。

但是查询字符串参数是可选的。它们是URI的最后一部分,位于?字符之后,例如api/house?id=1。在这种URI样式中,如果提供了查询字符串参数,您可能希望端点返回id为1的house,如果省略则返回所有house。

最后,您将通过FromUri属性记录查询字符串参数,并从路径中省略它:

[HttpGet]
[Route("api/house")]
public IActionResult GetHouseById([FromUri]int id)