#c# #.net-core #routes #asp.net-core-webapi
#c# #.net-ядро #маршруты #asp.net-ядро-webapi
Вопрос:
Я создаю службу веб-API .NETCore 3.1.
У меня возникли трудности с определением правильного определения маршрутизации для вызова службы.
Рассмотрим следующее определение:
[HttpPut]
[Route("{paramA}/{paramB}")]
public void Sample(string paramA, string[] paramB)
{
}
Как правильно определить мои параметры маршрутизации при передаче
массива строк? Должен ли я вместо этого использовать List?
Комментарии:
1. Я бы передал
paramB
в querystring —?paramB=1amp;paramB=2
etc2. По какой-либо причине вам нужны переменные в маршруте? Вы можете поместить ParamB в тело, и .net разберется с этим. Это также может предотвратить превышение максимальной длины URL-адреса в зависимости от вашего варианта использования.
3. @knowonecanknow — Я не совсем тебя понимаю. Вы можете сделать элобарат?
Ответ №1:
Я полагаю, что вы могли бы передать список массивов по строке запроса:
[HttpPut]
[Route("{paramA}")]
public void Sample([FromRoute]string paramA, [FromQuery]string[] paramB)
{
}
Отправьте запрос следующим образом: https://localhost:5001/xxxxxx/aaa?paramB=ssamp;paramB=sd
.
Ответ №2:
Я рекомендую вам передавать строки Arraay в теле запроса в HttpPost, это та часть запроса, в которой у вас нет ограничений на символы, когда в URL-адресе запроса у вас будет что-то вроде ограничений на 300 символов.
Например:
HttpPost]
[Route("MyArrayStrings")]
public async string MyArrayStrings([FromBody] string content)
{
return content;
}
А затем вы можете использовать Newtonsoft для сериализации данных при отправке запроса и для десериализации при получении.
Комментарии:
1.
when in the url of the query you will have something like 300 character limits.
2000 в целом (и это при условии, что поддерживается IE11).