Мне нужно поделиться некоторой информацией о доставке в моем проекте. NET Core 3.1 API. Я разработал конечную точку, которая возвращает набор объектов, удовлетворяющих предоставленным условиям фильтрации, содержащимся в объекте SearchResultsDto. Принцип работы фильтрующего механизма прост. На стороне клиента пользователь выбирает свойство и предоставляет для него некоторое значение. Пользователь может захотеть отфильтровать таблицу, используя одно, два или даже несколько свойств. Итак, мой метод контроллера должен принимать в качестве параметра набор фильтров (парное значение свойства-фильтра). Вот мой метод и определение класса фильтра:
[HttpGet]
public async Task<ActionResult<SearchResultsDto>> GetShipmentAsync([FromQuery] ICollection<Filter> filters,
[FromQuery] int page,
[FromQuery] int pageCapacity,
[FromQuery] DateTime dateTimeInfimum,
[FromQuery] DateTime dateTimeSupremum,
[FromQuery] bool withPodOnly) =>
Ok(await QueryBus
.SendAsync<GetShipmentQuery, SearchResultsDto>(new GetShipmentQuery
{
Page = page,
PageCapacity = pageCapacity,
DateTimeInfimum = dateTimeInfimum,
DateTimeSupremum = dateTimeSupremum,
WithPodOnly = withPodOnly,
Filters = filters
}));
public class Filter
{
public string PropertyName { get; set; }
public string FilterValue { get; set; }
}
Как правильно передать массив объектов фильтра, используя строку запроса? Хорошо ли использовать строку запроса для такого поведения? Если нет, как мне разработать свою конечную точку? Как правильно сериализовать объекты JavaScript и отправить их с помощью ax ios, используя метод GET?
Я уже пробовал что-то вроде этого:
https://localhost:44348/api/shipment?filters=[propertyName=materialReleaseReceipt&filterValue=WZ]&page=1&pageCapacity=4&dateTimeInfimum=2012-04-23T18:25:43.511Z&dateTimeSupremum=2012-04-23T18:25:43.511Z&withPodOnly=true
Но не работает. Коллекция фильтров анализируется неправильно.