在Web API参数中使用破折号

时间:2019-05-15 01:38:18

标签: api web url parameters hyphen

我有一个带有很多参数的Web API方法。这些参数用于在数据库中查找对象。在一种情况下,其中一个参数值中带有破折号(即http://localhost/api/event/getdata/param-one/2/3/4/) 我在这里看到了其他有关处理控制器或动作中的破折号甚至参数名而不是参数值的问题和解决方案。我无法预测所有值,因此我需要能够在其中处理任何带有破折号的参数。

[AcceptVerbs("POST")]
[Route("GetData/{arg0:alpha}/{arg1:int}/{arg2:int}/{arg3:int}/")]
public async Task<Dictionary<string, object>> GetData(string arg0, int arg1, int arg2, int arg3)
{
        ...
}

1 个答案:

答案 0 :(得分:0)

之所以发生这种情况,是因为第一个参数受到alpha约束,该参数仅允许使用字母字符。将其更改为{arg0:length(1,50)}之类的问题即可解决。

https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2