目录
一、删除文章分类功能。
(1)接口文档。
1、请求路径、请求参数。
2、请求参数。
3、响应数据。
(2)实现思路与代码书写。
1、controller层。
2、service接口业务层。
3、serviceImpl实现类。
4、mapper层。
5、后端接口测试。(postman)
二、获取文章详细功能。
(1)接口文档。
1、请求方式、请求路径、请求参数。
2、响应数据。
(2)实现思路与代码书写。
1、controller层。
2、service层接口业务层。
3、serviceImpl实现类。
4、mapper层。
5、后端接口测试。(postman)
三、更新文章详细功能。
(1)接口文档。
1、请求路径、请求方式。
2、请求参数。
3、响应数据。
(2)实现思路与代码书写。
1、Article实体类。(分组校验)
2、controller层。
3、service业务接口层。
4、serviceImpl层。
5、mapper层。
6、后端接口测试。(postman工具)
四、删除文章功能。
(1)接口文档。
1、请求方式、请求路径、请求参数。
2、响应数据。
(2)实现思路与代码书写。
1、controller层。
2、service业务接口层。
3、serviceImpl实现类。
4、mapper层。
5、后端接口测试。(postman工具)
一、删除文章分类功能。
(1)接口文档。
1、请求路径、请求参数。
- 请求路径:/category。根据请求方式的不同区分接口的功能。
- 请求方式:DELETE。
2、请求参数。
- 参数格式:queryString格式。(如..?username=zhangsan&password=123)
3、响应数据。
- 响应参数:code(状态码)、message(如操作成功或错误的提示信息)、data(非必须)。
(2)实现思路与代码书写。
1、controller层。
- 方法上面声明注解@DeleteMapping。
- 并在方法参数中声明一个Integer id,用它接收前端传递的"需要删除"的文章分类id。
- 记得在参数前指定非空校验。
/*** 用于根据ID删除文章分类* @param id* @return*/@DeleteMappingpublic Result delete(/*@Validated(Category.Delete.class)*/ @NotNull Integer id){categoryService.delete(id);return Result.success();}
2、service接口业务层。
/*** 用于删除文章分类* @param id*/void delete(Integer id);
3、serviceImpl实现类。
@Overridepublic void delete(Integer id) {//从ThreadLocal里面拿到idMap<String, Object> map = ThreadLocalUtil.get();//得到当前用户登录的idInteger userId = (Integer) map.get("id");//传入用户的idcategoryMapper.delete(userId, id);}
4、mapper层。
/*** 用于删除文章分类* @param userId* @param id*/@Delete("delete from category where id = #{id} and create_user = #{userId}")void delete(Integer userId, Integer id);
5、后端接口测试。(postman)
- 数据库表测试前状态。
- 执行删除文章分类"美食"操作。
- 删除成功!
二、获取文章详细功能。
(1)接口文档。
1、请求方式、请求路径、请求参数。
- 方式:GET请求。
- 路径:/article/detail。
- 请求参数格式:queryString。
- 请求参数:必须传,且是指定该文章的id。
2、响应数据。
- 响应数据:code(必须)、message、data(必须)。
- 响应数据示例。
(2)实现思路与代码书写。
1、controller层。
- 方法名:detail()。
- 方法上:使用注解@GetMapping("/article/detail")。
- 方法参数:使用@NotNull注解。
- 方法内部调用service层方法。
/*** 根据ID获取文章详细信息* @param id* @return*/@GetMapping("/detail")public Result<Article> detail(Integer id){Article article = articleService.findById(id);return Result.success(article);}
2、service层接口业务层。
/*** 根据id查询文章详情* @param id* @return*/Article findById(Integer id);
3、serviceImpl实现类。
@Overridepublic Article findById(Integer id) {//从ThreadLocal里面拿到idMap<String, Object> map = ThreadLocalUtil.get();//得到当前用户登录的idInteger userId = (Integer) map.get("id");//根据当前登录用户的id和文章id查询文章return articleMapper.findById(id, userId);}
4、mapper层。
@Select("select * from article where id = #{id} and create_user = #{userId}") Article findById(Integer id, Integer userId);
5、后端接口测试。(postman)
- 数据库表数据。
- 日期未格式化!
- 注意对象序列化(对象——>JSON格式数据)日期需要变成指定格式!
- Article实体类属性上添加注解。
- 重新启动工程。日期格式化。
三、更新文章详细功能。
(1)接口文档。
1、请求路径、请求方式。
- 请求路径:/article。
- 请求方式:PUT请求。
2、请求参数。
- 参数格式:JOSN格式对象。
- 参数样例。
3、响应数据。
- 响应数据:code(状态码:必须!)
(2)实现思路与代码书写。
1、Article实体类。(分组校验)
- 需要进行分组校验。因为新增文章对于id(不是必须的)。
- 添加分组。
- 指定校验分组。
- 添加对应属性的校验归属。
2、controller层。
- 使用注解@Validated(???)——指定校验分组。
@PutMappingpublic Result update(@RequestBody @Validated(Article.Update.class) Article article){articleService.update(article);return Result.success();}
3、service业务接口层。
/*** 用于更新文章详细* @param article*/void update(Article article);
4、serviceImpl层。
@Overridepublic void update(Article article) {//设置更新时间article.setUpdateTime(LocalDateTime.now());articleMapper.update(article);}
5、mapper层。
@Update("update article set title = #{title},content = #{content}, cover_img = #{coverImg},state = #{state},category_id = #{categoryId}, update_time = #{updateTime} where id = #{id} ") void update(Article article);
6、后端接口测试。(postman工具)
- 数据库当前数据。
- 执行更新操作。
- 更新后数据库数据。
- 新增文章。(没有传id)
- 新增后数据库数据。
- 测试其它数据校验。
四、删除文章功能。
(1)接口文档。
1、请求方式、请求路径、请求参数。
- 请求方式:DELETE请求。
- 请求路径:/article。
- 请求参数:queryString请求参数格式。
- 参数说明:id必须传值。使用注解。
2、响应数据。
(2)实现思路与代码书写。
1、controller层。
/*** 用于根据ID删除文章详细* @param id* @return*/@DeleteMappingpublic Result delete(@NotNull Integer id){articleService.delete(id);return Result.success();}
2、service业务接口层。
/*** 根据id删除文章* @param id*/void delete(Integer id);
3、serviceImpl实现类。
@Overridepublic void delete(Integer id) {//从ThreadLocal里面拿到idMap<String, Object> map = ThreadLocalUtil.get();//得到当前用户登录的idInteger userId = (Integer) map.get("id");//传入用户的idarticleMapper.delete(userId, id);}
4、mapper层。
@Delete("delete from article where id = #{id} and create_user = #{userId}") void delete(Integer userId, Integer id); }
5、后端接口测试。(postman工具)
- 数据库当前数据。
- 测试删除id=6的文章。
- 操作成功后数据。