Web API - 将双参数传递给GET方法

3
我有以下方法:

我有以下方法:

[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)}")]

不过它也无法正常工作。

我该如何修复它?

1个回答

10

在URL末尾添加斜杠“/”对我来说可以解决这个问题。看起来路由引擎将其视为2.777文件扩展名,而不是输入参数。

此外,当使用内置助手程序生成链接时,似乎可以注册自定义路由,自动将斜杠添加到URL末尾。

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

routes.AppendTrailingSlash = true;

更多细节请查看这里

最后,max和min函数仅适用于整数。

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

我认为它不适用于双精度浮点数。


问题的一半已经解决了,但是在范围限制方面还不能正常工作。我又创建了一个问题:http://stackoverflow.com/questions/36119037/webapi-min-max-double-for-routeattribute - Oleg Sh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接