Использование дефиса в параметре Web API - PullRequest
0 голосов
/ 15 мая 2019

У меня есть метод веб-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 голосов
/ 15 мая 2019

Это произошло из-за альфа-ограничения на этот первый параметр, который допускает только буквенные символы. Изменение на что-то вроде {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

...