У меня есть общий сценарий, когда я хочу перечислить некоторые элементы в приложении веб-клиента (я использую vue.js и axios), которые выбираются из серверной части (приложение REST asp.net core 2.2). Клиент должен передать некоторые параметры фильтрации и нумерации страниц бэкэнду, чтобы получить элементы, которые он должен отобразить на текущей странице.
Однако у меня проблема в том, что действие GET, определенное на контроллере сервера, не может десериализовать параметры, переданные ему из HTTP-запроса.
Вот код бэкэнда:
// these are classes that represent parameters sent in HTTP Get request
public class Filter
{
public bool IsActive { get; set; }
public string Name { get; set; }
}
public class Pagination
{
public string Page { get; set; }
public string ItemsPerPage { get; set; }
}
Это действие в контроллере:
[HttpGet]
public IActionResult GetItems([FromQuery]Filter filter, [FromQuery]Pagination pagination)
{
// ... get items from db with specified filter and pagination
return Ok();
}
Вот аксиос запроса на получение от клиента:
axios.get('https://localhost:44336/api/items', {
params: {
filter: {
isLive: true,
name: 'test123'
},
pagination: {
page: 5,
itemsPerPage: 10
}
}
})
Обратите внимание, что я использую параметры axios, чтобы указать два вложенных объекта, один фильтр и другую нумерацию страниц. Это не работает, и параметры, переданные в действие GetItems (), являются объектами со значениями по умолчанию (например, isLive = false, name = null, page = 0, itemsPerPage = 0 ...)
Есть ли способ заставить эту работу работать и иметь два отдельных объекта, переданных и должным образом десериализованных действием GetItems ()?