基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(三) (4)

这时候就需要注意,这里做了一个比较通用的方法,找到数据库中当前文章Id的所有Tags,然后根据参数input.Tags可以找出被删掉的标签的PostTags的Id,调用删除方法删掉即可,同时也可以获取到新增的标签,批量进行保存。

完成上面操作后,才保存新加标签与文章对应的数据,最后提示更新成功,在BlogController.Admin添加API。

/// <summary> /// 更新文章 /// </summary> /// <param></param> /// <param></param> /// <returns></returns> [HttpPut] [Authorize] [Route("post")] [ApiExplorerSettings(GroupName = Grouping.GroupName_v2)] public async Task<ServiceResult> UpdatePostAsync([Required] int id, [FromBody] EditPostInput input) { return await _blogService.UpdatePostAsync(id, input); }

[HttpPut]指定请求方式为put请求,一般需要修改用put,添加用post。

[Required]指定参数id必填且是FromQuery的方式,input为[FromBody]。

更新一下上面新增的数据试试。

7

8

删除文章

删除相对来说就非常简单了,一般删除都会做逻辑删除,就是避免某些手残删除了,有找回的余地,我们这里就直接Delete了,也没什么重要数据。

添加接口:DeletePostAsync。

/// <summary> /// 删除文章 /// </summary> /// <param></param> /// <returns></returns> Task<ServiceResult> DeletePostAsync(int id);

实现接口。

/// <summary> /// 删除文章 /// </summary> /// <param></param> /// <returns></returns> public async Task<ServiceResult> DeletePostAsync(int id) { var result = new ServiceResult(); var post = await _postRepository.GetAsync(id); if (null == post) { result.IsFailed(ResponseText.WHAT_NOT_EXIST.FormatWith("Id", id)); return result; } await _postRepository.DeleteAsync(id); await _postTagRepository.DeleteAsync(x => x.PostId == id); result.IsSuccess(ResponseText.DELETE_SUCCESS); return result; }

删除的时候同样去查询一下数据,来判断是否存在。

ResponseText.DELETE_SUCCESS是添加的常量删除成功,删除成功同时也要将post_tags表的标签对应关系也干掉才算完整,在BlogController.Admin添加API。

/// <summary> /// 删除文章 /// </summary> /// <param></param> /// <returns></returns> [HttpDelete] [Authorize] [Route("post")] [ApiExplorerSettings(GroupName = Grouping.GroupName_v2)] public async Task<ServiceResult> DeletePostAsync([Required] int id) { return await _blogService.DeletePostAsync(id); }

[HttpDelete]指定请求方式是删除资源,[Required]指定参数Id必填。

删掉上面添加的文章看看效果。

9

至此,完成了博客文章的增删改接口,未完待续...

开源地址:https://github.com/Meowv/Blog/tree/blog_tutorial

搭配下方课程学习更佳 ↓ ↓ ↓

7

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspgzp.html