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

API 不应直接返回Entity

    *   Entity/Domain Model是内部实现细节
    * 合约/接口界面
image.png

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

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

Entity与Resoucre之间映射[AutoMapper]

  • 安装Nuget包:
    AutoMapper
    AutoMapper.Extensions.Microsoft.DependencyInjection >>> API
  • 配置映射
    可以创建Profile
    CreateMap<TSource, TDestination>()
public class MappingProfile:Profile
    {
        public MappingProfile()
        {
            CreateMap<Post, PostResource>()
                .ForMember(dest => dest.UpdateTime, opt => opt.MapFrom(src => src.LastModified));
            CreateMap<PostResource,Post>();
        }
    }
  • services.AddAutoMapper()
  • 依赖注入AutoMapper
[HttpGet]
public async Task<IActionResult> Get()
{
      var posts = await _postRepository.GetAllPostsAsync();
      var postResources = _mapper.Map<IEnumerable<Post>,IEnumerable<PostResource>>(posts);
      return Ok(postResources);
 }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容