【问题标题】:Web API - pass double parameters to GET methodWeb API - 将双重参数传递给 GET 方法
【发布时间】:2016-03-20 18:25:12
【问题描述】:

我有以下方法:

[Route("GetEditorialRequestsByCoordinates/{lat:min(-90):max(90)}/{lng:min(-180):max(180)}")]
[AutomapperExceptionApiFilterAttribute]
public HttpResponseMessage GetEditorialRequestsByCoordinates(double lat, double lng)
{

}

当我打电话时它工作正常......

GET /v1/api/request/GetEditorialRequestsByCoordinates/48/2

但我想像这样传递双精度值:

GET /v1/api/request/GetEditorialRequestsByCoordinates/48.999/2.777

我收到一个错误(未找到 404)。似乎,它无法通过路由找到合适的方法。 我尝试过设置路线:

[Route("GetEditorialRequestsByCoordinates/{lat:double:min(-90):max(90)}/{lng:double:min(-180):max(180)}")]

...但它也不起作用。

我该如何解决?

【问题讨论】:

    标签: asp.net-web-api asp.net-web-api2 asp.net-web-api-routing


    【解决方案1】:

    只需在 URL 末尾添加 / 即可为我更正它。看起来路由引擎将其视为 2.777 文件扩展名,而不是输入参数。

    此外,您似乎可以注册一个自定义路由,当使用内置帮助器生成链接时,该路由会自动在 URL 末尾添加斜杠。

    他最简单的解决方案是将以下行添加到您的 RouteCollection。不确定如何使用该属性,但在您的 RouteConfig 中,您只需添加以下内容:

    routes.AppendTrailingSlash = true;
    

    更多详情请查看here

    最后一个 max 和 min 函数适用于整数

    ma​​x:匹配具有最大值的整数。 {x:max(10)}

    我认为它不适用于双倍。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多