【问题标题】:WebApi GET using Path and Query Parameters使用路径和查询参数的 WebApi GET
【发布时间】:2019-05-16 16:11:38
【问题描述】:

我正在使用 ASP.NET Core 1.1 API 并尝试使用 Path 和 Query 参数创建一个 GET api,其中:

[HttpGet]
[Route("users/{stationId}/{stationSite}")]
public IActionResult GetUsers(int stationId, int stationSiteid, [FromQuery] Paging properties)...

分页是一个对象:

public int CurrentIndex {get; set;}
public int ItemsPerPage {get; set;}

现在,我需要这样的电话才能工作:

api/users/1/2?currentIndex=1&itemsPerPage=10

FromQuery 不起作用,它出现在 Swagger 上,但未将正确的值传递给 API。

我错过了什么吗??

【问题讨论】:

  • 这应该可以,我刚刚测试过。 Paging 类是否仅由这些字段组成?它的构造函数上有什么吗?此外,stationSite 参数拼写错误。它必须与参数stationSiteid匹配。
  • 这只是我当前代码中的一个示例。我只是想出了问题所在。确实这种方法效果很好,我已经在 Postman 上进行了测试。问题是:WebApi 使用的是 Swashbuckle(swagger) 版本 6.0.0-beta902,它无法识别以下 Paging 参数。一旦我将 Swashbuckle 更新到 4.1.0,它就可以正常工作了。这个 Swashbucle 版本是 NuGet 上的预发布版本,我只能在 Visual Studio NuGet 包管理器上列出它,但它与 nuget.org/packages/Swashbuckle.AspNetCore/1.1.0 无关 - 这让我感到困惑。感谢您的宝贵时间。
  • 啊,所以它不起作用的是从招摇中调用 API?知道了。也许将其发布为答案,以便其他人受益:)

标签: asp.net-core get asp.net-core-webapi


【解决方案1】:

使用 Swashbuckle 的预发布版本会造成这种混乱。

此属性未在 Swagger 上列出,但使用 Postman 测试 API,它有效。

将 Swashbuckle 降级到 4.0.0 稳定版,运行良好。

【讨论】:

    猜你喜欢
    • 2018-12-28
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    相关资源
    最近更新 更多