首页 > 解决方案 > NgRx 数据,EntityCollectionService 的默认 Api 不匹配 Asp.net Core Web Api

问题描述

我有扩展 ngrx\data 的 EntityCollectionServiceBase 的服务

@Injectable()
export class ProductService extends EntityCollectionServiceBase<Product> {

  constructor(elementsFactory: EntityCollectionServiceElementsFactory) {

    super('Product', elementsFactory);

  }

我的 asp.net 控制器是这样的

[Route("api/[controller]")]
    [ApiController]
    public class ProductController : ApiController
    {
        // GET: api/<ProductController>
        [HttpGet]
        public async Task<ActionResult<ProductsListVm>> GetAll()
        {
            var vm = await Mediator.Send(new GetProductsListQuery());
            return Ok(vm);
        }

        // GET api/<ProductController>/5
        [HttpGet("{id}")]
        public string Get(int id)
        {
            return "value";
        }
}

因此,当我在 ngrx\data 的实体服务上调用 GetAll 时,它请求 {url}/api/products/ 而 asp.net Web API 控制器仅响应 {url}/api/product/

用最少的代码解决的任何配置或技巧

标签: asp.net-web-apiasp.net-core-webapingrxngrx-storeangular-ngrx-data

解决方案


您应该将复数名称定义为:

import { EntityMetadataMap } from 'ngrx-data';

const entityMetadata: EntityMetadataMap = {
  Product: {},
};

const pluralNames = { Product: 'product' };

export const entityConfig = {
  entityMetadata,
  pluralNames
};

推荐阅读