. Net Маршрутизация API Core 3.1 не работает должным образом - PullRequest
0 голосов
/ 16 июня 2020

У меня есть довольно простой контроллер для моего API. Один метод возвращает все устройства, а другой метод возвращает информацию только об одном. Оба они - HttpGet.

Определение моего маршрута:

[Route("api/device/list/{Id}")]
[ApiController]
public class DeviceController : ControllerBase

Этот метод всегда вызывается, когда я передаю идентификатор:

[HttpGet]
public ActionResult<poiDevices> GetDeviceList()

URL-адрес PostMan выглядит так:

https://localhost: 5001 / api / device / list / mycoolid

При вызове выше создается, я хочу, чтобы он вызвал этот метод ниже, определенный как таковой с параметром Id:

    public ActionResult<DeviceDto> GetDeviceDetails(
    [FromRoute] string Id)

В приведенном выше коде есть заполнитель для идентификатора, поэтому я ожидаю этого вызываемый метод, вместо этого вызывается метод generi c, который возвращает все. Если я извлеку идентификатор из URL-адреса, API вернет 404 not found, что означает, что я испортил часть маршрутизации этого.

Что мне здесь не хватает?

1 Ответ

3 голосов
/ 16 июня 2020

Вам следует сменить контроллер следующим образом.

[Route("api/device")]
[ApiController]
public class DeviceController : ControllerBase
{

  [HttpGet]
  [Route("list")]
  public ActionResult<poiDevices> GetDeviceList()  {

  }

  [Route("list/{id}")]
  public ActionResult<DeviceDto> GetDeviceDetails(
    [FromRoute] string Id)   {

  }

}
...