我正在使用.net core 2.1 Web API。我有一个ValuesController和api / values / 5&api / values /之类的路由可以正常工作。但是现在我想路由到类似api / values?id = 5&type = 2的东西。可能有这样的路线吗?
我已经搜索了stackoverflow和其他站点,但是还没有找到一种方法。我尝试使用下面的代码,但不起作用。
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
return "value" + id;
}
[HttpGet]
public ActionResult<string> Get(int id, int type)
{
return "value: " + id + "with type: " + type;
}
}
我想作为api / values?id = 5&type = 2或api / values / id = 5&type = 2路由
答案 0 :(得分:0)
您不能通过查询字符串来区分路线。您应该合并两个“获取”方法并调用api/values?id=5&type=2
[HttpGet]
public ActionResult Get(int id, int type)
{
if (id == 0 && type == 0)
{
return Ok(new string[] { "value1", "value2" });
}
else
{
return Ok("value: " + id + " with type: " + type);
}
}
答案 1 :(得分:0)
尝试以下更改:
[HttpGet]
[Route("id={id}&type={type}")] // GET api/values/id=5&type=2
public ActionResult<string> Get(int id, int type)
{
return "value: " + id + "with type: " + type;
}