NSwag 生成的客户端不发送两个参数
NSwag generated client not sending two parameters
我有一个使用 .NET Core 2.2 的 API 项目,其中包含一个带有两个参数的调用:
[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 调用时,此调用工作正常。参数通过并通过参数过滤器传递正确的数据。
当使用 nswag 在 .NET Core 3.0 项目中生成客户端时,客户端代码似乎可以看到参数,但是当 url 被创建时(即 "urlBuilder" 字符串),它只是调用不带任何参数的基本 API 方法,因此它会 returns 所有记录。我已经从客户端逐步通过它到 api 并且参数没有通过网络。我最初将它们作为可选参数,但在阅读不支持可选参数后我删除了所有这些(是否仍然如此?)。
使用 2 个参数时是否必须做一些不同的事情?还是我做错了什么?
我发现有两种方法可以解决这个问题:
一个。给参数添加[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。
我有一个使用 .NET Core 2.2 的 API 项目,其中包含一个带有两个参数的调用:
[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 调用时,此调用工作正常。参数通过并通过参数过滤器传递正确的数据。
当使用 nswag 在 .NET Core 3.0 项目中生成客户端时,客户端代码似乎可以看到参数,但是当 url 被创建时(即 "urlBuilder" 字符串),它只是调用不带任何参数的基本 API 方法,因此它会 returns 所有记录。我已经从客户端逐步通过它到 api 并且参数没有通过网络。我最初将它们作为可选参数,但在阅读不支持可选参数后我删除了所有这些(是否仍然如此?)。
使用 2 个参数时是否必须做一些不同的事情?还是我做错了什么?
我发现有两种方法可以解决这个问题:
一个。给参数添加[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。