Строка запроса и маршрутизация атрибутов вместе для основного веб-API контроллера .NET - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь добиться чего-то подобного

namespace CoreAPI.Controllers
{
    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        // GET api/values

        // GET api/values/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
            return "value";
        }

        [HttpGet]
        public string GetValue(string name,string surname)
        {
            return "Hello " + name;
        }
    }
}

Я хочу вызвать этот метод контроллера, используя оба этих URL:

  1. http://localhost:11979/api/values/Getvalues/John/lawrance
  2. http://localhost:11979/api/values/GetValues?name=john&surname=lawrance

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете решить эту проблему, определив несколько маршрутов поверх метода контроллера

[HttpGet("GetValues")]
[HttpGet("GetValues/{name}/{surname}")]
public string GetValue(string name, string surname)
{
    return "Hi" + name;
}

Это будет работать с http://localhost:11979/api/values/GetValues/John/lawrance и http://localhost:11979/api/values/GetValues?name=john&surname=lawrance

Чтобы добавить больше:

[HttpGet]
[Route("GetValues")]
[Route("GetValues/{name}/{surname}")]
public string GetValue(string name,string surname)
{
    return "Hello " + name + " " + surname;
}

Это тоже работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...