ASP .NET Core Web API_ 06_Resource Model(Dto)

API 不应直接返回Entity

    *   Entity/Domain Model是内部实现细节
    * 合约/接口界面
ASP .NET Core Web API_ 06_Resource Model(Dto)_第1张图片
image.png

API应返回另外一个类(资源 Resource)

  • 与Entity可能很像.
  • 独立于Entity, 单独进化和改变.
  • 也可以叫做ViewModel, Dto

Entity与Resoucre之间映射[AutoMapper]

  • 安装Nuget包:
    AutoMapper
    AutoMapper.Extensions.Microsoft.DependencyInjection >>> API
  • 配置映射
    可以创建Profile
    CreateMap()
public class MappingProfile:Profile
    {
        public MappingProfile()
        {
            CreateMap()
                .ForMember(dest => dest.UpdateTime, opt => opt.MapFrom(src => src.LastModified));
            CreateMap();
        }
    }
  • services.AddAutoMapper()
  • 依赖注入AutoMapper
[HttpGet]
public async Task Get()
{
      var posts = await _postRepository.GetAllPostsAsync();
      var postResources = _mapper.Map,IEnumerable>(posts);
      return Ok(postResources);
 }

你可能感兴趣的:(ASP .NET Core Web API_ 06_Resource Model(Dto))