这时候就需要注意,这里做了一个比较通用的方法,找到数据库中当前文章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]。
更新一下上面新增的数据试试。
删除文章删除相对来说就非常简单了,一般删除都会做逻辑删除,就是避免某些手残删除了,有找回的余地,我们这里就直接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必填。
删掉上面添加的文章看看效果。
至此,完成了博客文章的增删改接口,未完待续...
开源地址:https://github.com/Meowv/Blog/tree/blog_tutorial
搭配下方课程学习更佳 ↓ ↓ ↓