Нет, ты не.sortOrder
в конце, но pageSize
и filter
- нет.Короче говоря, вы не можете иметь несколько дополнительных параметров, подобных этому.Он создает слишком много комбинаций маршрутов, из-за которых невозможно определить, как направить запрос или какие конкретные параметры маршрута заполнить.Например, что если вы заполните pageSize
и sortOrder
, но не filter
?Как ASP.NET Core должен знать, что то, что вы указали для sortOrder
, на самом деле не предназначено для filter
?
FWIW, вам также нужны косые черты между этими параметрами маршрута.Иначе нет способа узнать, где заканчивается один и начинается следующий.Например, является ли маршрут, такой как /111
, говорящий о первой странице размером 11, о 11-й странице размером 1 или о странице 111 без установленного размера?Тем не менее, это не поможет вам сделать их необязательными.
Если вам нужно несколько дополнительных элементов в URL, лучше просто использовать строку запроса для их предоставления.
ОБНОВЛЕНИЕ
Вам не нужно и на самом деле не должно быть несколько действий для постраничного или нет.Там слишком много общей функциональности, а разница слишком мала.Типичная формула:
public async Task<IActionResult> GetAll(int? page = null, int pageSize = 10)
{
var query = _context.Foos;
if (page.HasValue)
{
query = query.Skip((page.Value - 1) * pageSize).Take(pageSize);
}
return Ok(await query.ToListAsync());
}