В моем приложении javascript я пытаюсь передать массив строк, среди других параметров, в запросе GET службе REST ASP.NET Web API с помощью jQuery Ajax.
Пример URL выглядит следующим образом:
http://my.services.com/products?userId=1abc&id=1&id=2&id=3
Подпись метода Web API:
[HttpGet("products")]
public IActionResult GetProducts(string userId, int[] id)
Если я попробую запрос с почтальоном, привязка параметров будет работать правильно. В приложении Javascript я попробовал несколько решений без удачи. Код выглядит следующим образом:
let data = {
'userId': '1abc'
'id': [1,2,3]
}
$.ajax({
type: 'get',
url: 'http://my.services.com/products',
data: data,
crossDomain: true, //CORS
cache: false,
}
В этом случае URL становится:
http://my.services.com/products?userId=1abc&id%5B%5D=1&id%5B%5D=2&id%5B%5D=3
, поскольку в разобранном результате вместо использования id
в качестве ключа он использует id[]
, поэтому кодирует символы []
как %5B
и %5D
.
Не повезло, даже если я использую этот код:
let data = {
'userId': '1abc'
'id': JSON.stringify([1,2,3])
}
или (как видно из этого ответа )
let data = {
'userId': '1abc'
'id[]': [1,2,3]
}
Имейте в виду, что для других вызовов приведенный выше код JQuery AJAX работает без каких-либо проблем.