У меня есть это действие в 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?