Рекомендации по получению запроса с некоторыми запросами и сортируемыми полями в ASP.NET Core Web API - PullRequest
0 голосов
/ 01 октября 2019

У меня есть это действие в CommodityTypeController:

[HttpGet("")]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.NotFound)]
public async Task<ActionResult> Get(string name, int page = 1, int count = 10)
{
    var result = await commodityTypeService.Get(name: name, page, count);
    return Ok(result);
}

, которое возвращает список CommodityTypeDto.

Это мой CommodityTypeService:

public async Task<IEnumerable<CommodityTypeDto>> Get(string name,int page, int count)
{
    var entities = await commodityTypeRepository.Get(x => name.HasValue() ? x.Name.Contains(name) : true, page, count);
    var dtos = mapper.Map<IEnumerable<CommodityTypeDto>>(entities);
    return dtos;
}

И это мой CommodityTypeDto:

public class CommodityTypeDto
{
    public long Id { get; set; }
    public string Name { get; set; }
    public decimal AccountNumberId { get; set; }
}

И, наконец, это мой CommodityTypeRepository:

public async virtual Task<IEnumerable<CommodityType>> Get(Expression<Func<CommodityType, bool>> expression, int page, int count)
{
    var result = await set.Where(expression)
                          .Skip((page-1) * count)
                          .Take(count)
                          .ToListAsync();
    return result;
}

Какая лучшая практика для создания get api? Если я хочу искать с большим количеством параметров и сортировать по некоторым полям в моем API, это хороший метод?

Есть ли какая-либо библиотека для сортировки и запроса из API в контекст EF?

1 Ответ

0 голосов
/ 01 октября 2019

На серверной стороне. Вы должны применить фильтрацию, чтобы минимизировать трафик от сервера к клиенту. На переднем конце Вы должны применить сортировку и фильтрацию по возвращенным результатам. Представьте себе ситуацию, когда вы хотите отсортировать действительно большой объем данных на сервере. При каждом изменении критериев сортировки будет передаваться один и тот же объем данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...