Сгенерированный NSwag клиент не отправляет два параметра - PullRequest
0 голосов
/ 28 января 2020

У меня есть проект API, использующий. NET Core 2.2, который включает вызов с двумя параметрами:

[HttpGet(nameof(VerifyCreds))]
[Route("VerifyCreds/{fName}/{lName}")]
public ActionResult<List<VerifyCredsModel>> VerifyCreds(string fName, string lName)
{
   var result = _service.VerifyCreds(fName, lName);

   return result;
}

Этот вызов работает нормально, когда вызывается напрямую из API. Параметры передаются, и правильные данные передаются с помощью фильтров параметров.

При создании клиента в проекте. NET Core 3.0 с использованием nswag клиентский код отображается для просмотра параметров, но когда URL-адрес получает Созданный (т. е. строка «urlBuilder»), он просто вызывает метод базового API без каких-либо параметров, поэтому возвращает все записи. Я прошел через это от клиента к API, и параметры не делают это по проводам. Изначально они были у меня в качестве необязательных параметров, но я удалил все это после прочтения того, что необязательные параметры не поддерживаются (это все еще верно?).

Нужно ли делать что-то другое при использовании 2 параметров? Или я просто сделал что-то не так?

1 Ответ

0 голосов
/ 28 января 2020

Я нашел два способа обойти это:

a. Добавьте атрибут [FromQuery] к параметрам:

[HttpGet(nameof(VerifyCreds))]
[Route("VerifyCreds/{fName}/{lName}")]
public ActionResult<List<VerifyCredsModel>> VerifyCreds([FromQuery]string fName, [FromQuery]string lName)
    {
       var result = _service.VerifyCreds(fName, lName);

       return result;
    }

b. Удалите атрибут маршрута:

[HttpGet(nameof(VerifyCreds))]
public ActionResult<List<VerifyCredsModel>> VerifyCreds(string fName, string lName)
    {
       var result = _service.VerifyCreds(fName, lName);

       return result;
    }

Если у кого-то есть более подробная информация о том, является ли он предпочтительным, дайте мне знать. В противном случае, я выбрал вариант 2.

...