Как маршрутизировать к API / значениям? Id = 1 & type = 2 - PullRequest
0 голосов
/ 02 апреля 2019

Я работаю с .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

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Попробуйте следующие изменения:

    [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;
    }
0 голосов
/ 02 апреля 2019

Вы не можете отличить маршрут по строке запроса.Вы должны объединить два метода Get и вызвать 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);
    }
}
...