分别实现这几个接口。
/// <summary> /// 查询友链列表 /// </summary> /// <returns></returns> public async Task<ServiceResult<IEnumerable<QueryFriendLinkForAdminDto>>> QueryFriendLinksForAdminAsync() { var result = new ServiceResult<IEnumerable<QueryFriendLinkForAdminDto>>(); var friendLinks = await _friendLinksRepository.GetListAsync(); var dto = ObjectMapper.Map<List<FriendLink>, IEnumerable<QueryFriendLinkForAdminDto>>(friendLinks); result.IsSuccess(dto); return result; } /// <summary> /// 新增友链 /// </summary> /// <param></param> /// <returns></returns> public async Task<ServiceResult> InsertFriendLinkAsync(EditFriendLinkInput input) { var result = new ServiceResult(); var friendLink = ObjectMapper.Map<EditFriendLinkInput, FriendLink>(input); await _friendLinksRepository.InsertAsync(friendLink); // 执行清除缓存操作 await _blogCacheService.RemoveAsync(CachePrefix.Blog_FriendLink); result.IsSuccess(ResponseText.INSERT_SUCCESS); return result; } /// <summary> /// 更新友链 /// </summary> /// <param></param> /// <param></param> /// <returns></returns> public async Task<ServiceResult> UpdateFriendLinkAsync(int id, EditFriendLinkInput input) { var result = new ServiceResult(); var friendLink = await _friendLinksRepository.GetAsync(id); friendLink.Title = input.Title; friendLink.LinkUrl = input.LinkUrl; await _friendLinksRepository.UpdateAsync(friendLink); // 执行清除缓存操作 await _blogCacheService.RemoveAsync(CachePrefix.Blog_FriendLink); result.IsSuccess(ResponseText.UPDATE_SUCCESS); return result; } /// <summary> /// 删除友链 /// </summary> /// <param></param> /// <returns></returns> public async Task<ServiceResult> DeleteFriendLinkAsync(int id) { var result = new ServiceResult(); var friendLink = await _friendLinksRepository.FindAsync(id); if (null == friendLink) { result.IsFailed(ResponseText.WHAT_NOT_EXIST.FormatWith("Id", id)); return result; } await _friendLinksRepository.DeleteAsync(id); // 执行清除缓存操作 await _blogCacheService.RemoveAsync(CachePrefix.Blog_FriendLink); result.IsSuccess(ResponseText.DELETE_SUCCESS); return result; }其中查询友链列表和新增友链中有两条AutoMapper配置。
CreateMap<FriendLink, QueryFriendLinkForAdminDto>(); CreateMap<EditFriendLinkInput, FriendLink>().ForMember(x => x.Id, opt => opt.Ignore());在BlogController.Admin.cs中添加接口。
#region FriendLinks /// <summary> /// 查询友链列表 /// </summary> /// <returns></returns> [HttpGet] [Authorize] [Route("admin/friendlinks")] [ApiExplorerSettings(GroupName = Grouping.GroupName_v2)] public async Task<ServiceResult<IEnumerable<QueryFriendLinkForAdminDto>>> QueryFriendLinksForAdminAsync() { return await _blogService.QueryFriendLinksForAdminAsync(); } /// <summary> /// 新增友链 /// </summary> /// <param></param> /// <returns></returns> [HttpPost] [Authorize] [Route("friendlink")] [ApiExplorerSettings(GroupName = Grouping.GroupName_v2)] public async Task<ServiceResult> InsertFriendLinkAsync([FromBody] EditFriendLinkInput input) { return await _blogService.InsertFriendLinkAsync(input); } /// <summary> /// 更新友链 /// </summary> /// <param></param> /// <param></param> /// <returns></returns> [HttpPut] [Authorize] [Route("friendlink")] [ApiExplorerSettings(GroupName = Grouping.GroupName_v2)] public async Task<ServiceResult> UpdateFriendLinkAsync([Required] int id, [FromBody] EditFriendLinkInput input) { return await _blogService.UpdateFriendLinkAsync(id, input); } /// <summary> /// 删除友链 /// </summary> /// <param></param> /// <returns></returns> [HttpDelete] [Authorize] [Route("friendlink")] [ApiExplorerSettings(GroupName = Grouping.GroupName_v2)] public async Task<ServiceResult> DeleteFriendLinkAsync([Required] int id) { return await _blogService.DeleteFriendLinkAsync(id); } #endregion Next截止本篇,基于 abp vNext 和 .NET Core 开发博客项目 系列的后台API部分便全部开发完成了。
本博客项目系列是我一边写代码一边记录后的成果,并不是开发完成后再拿出来写的,涉及到东西也不是很多,对于新手入门来说应该是够了的,如果你从中有所收获请多多转发分享。
在此,希望大家可以关注一下我的微信公众号:『阿星Plus』,文章将会首发在公众号中。
现在有了API,大家可以选择自己熟悉的方式去开发前端界面,比如目前我博客的线上版本就是用的 ASP.NET Core Web ,感兴趣的可以去 release 分支查看。
关于前端部分,看到有人呼吁vue,说实话前端技术不是很厉害,本职主要是后端开发,可能达不到预期效果。
所以我准备入坑 Blazor