Можно передать список целых чисел через веб-API или мне нужно использовать строковый параметр

У меня есть сценарий, в котором мне нужно отправить несколько ProductId в запросе GET на мой веб-API.

В моем контроллере веб-API asp.net есть способ сделать параметр моего метода Action типом List<int> productIds. Я предполагаю, что нет, я должен передать их вот так ?ProductIds=1,2,3, а затем принять это как string productIds.

Пожалуйста, дайте мне знать, если есть лучший способ.


person Blake Rivell    schedule 07.07.2016    source источник


Ответы (1)


Вы можете указать, что вы собираетесь принимать int[] в качестве параметра, а веб-API должен обработать сопоставление строки с разделителями-запятыми в массив, как и ожидалось. Вам может потребоваться включить атрибут [FromUri], чтобы веб-API знал, что вы ожидаете эти значения от строки запроса:

public IEnumerable<Product> GetProducts([FromUri] int[] ProductIds)
{
      // Your code here.
}

Вы также можете указать, что несколько значений сопоставляются с одним и тем же параметром строки запроса:

?ProductIds=1&ProductIds=2&ProductIds=3...
person Rion Williams    schedule 07.07.2016
comment
Итак, как должен выглядеть мой параметр строки запроса и как должен выглядеть параметр в моем методе действия? Кроме того, это должен быть массив? Могу ли я использовать список? - person Blake Rivell; 07.07.2016
comment
Строковый подход с разделителями-запятыми, который вы используете, должен работать нормально, или вы можете использовать второй подход, который я предоставил (т.е. повторяющиеся параметры строки запроса). У Филипа Войя есть запись в блоге на эту тему, в которой содержится немного больше подробностей и даже используется специальный биндер для обработки значений, разделенных запятыми. - person Rion Williams; 07.07.2016
comment
Знаете ли вы, почему, если я вообще не передам параметр, список появится как созданный с нулевым счетчиком? Я ожидаю, что он будет нулевым. - person Blake Rivell; 07.07.2016
comment
У меня есть такой параметр, как: List‹int› productIds = null - person Blake Rivell; 07.07.2016
comment
Поможет ли [FromUri] передать большое количество данных, например список из 1000 элементов, не будет ли это громоздкой отправкой - person Mrinal Kamboj; 08.07.2016
comment
Это не работает для списка, разделенного запятыми, как описано. - person socketman; 08.10.2016