文章相关接口

1.新增文章分类

文章分类的表结构和实体类

实体类

接口文档

实现

新创建CategoryController,CategoryService,(CategoryServiceImpl),CategoryMapper

在CategoryController中添加方法

使用注解@PostMapping,没有映射路径,我们在CategoryController的类上添加一个映射路径@RequestMapping("/category"),然后同通过请求方式的方式进行区分,来提供服务。

在方法上声明一个实体类参数,加上@RequestBody让MVC框架自动读取请求体中的json数据,并把json数据转换成一个对象。

在mapper层添加分类时,要添加这个分类是谁创建的,创建时间,更新时间。但是接口文档中,前端给我们传递的参数里面只有分类的名称和分类的别名。所以在执行mapper层的sql之前,我们需要在service层中把category里面的一些属性值给它完善好

 CategoryController.java
package org.exampletest.controller;

import org.exampletest.pojo.Category;
import org.exampletest.pojo.Result;
import org.exampletest.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    private CategoryService categoryService;
    @PostMapping
    public Result add(@RequestBody @Validated Category category){
        categoryService.add(category);
        return Result.success();
    }

}

CategoryService.java 

package org.exampletest.service;

import org.exampletest.pojo.Category;

public interface CategoryService {
    //新增分类
    void add(Category category);

}

CategoryServiceImpl.java 

package org.exampletest.service.impl;

import org.exampletest.mapper.CategoryMapper;
import org.exampletest.pojo.Category;
import org.exampletest.service.CategoryService;
import org.exampletest.utils.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Map;

@Service
public class CategoryServiceImpl implements CategoryService {
    @Autowired
    private CategoryMapper categoryMapper;
    @Override
    public void add(Category category) {
        //补充属性值
        category.setCreateTime(LocalDateTime.now());
        category.setUpdateTime(LocalDateTime.now());

        Map<String,Object> map= ThreadLocalUtil.get();
        Integer userid = (Integer)map.get("id");
        category.setCreateUser(userid);
        categoryMapper.add(category);
    }
}

CategoryMapper.java 

package org.exampletest.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.exampletest.pojo.Category;

@Mapper
public interface CategoryMapper {
    //新增分类
    @Insert("insert into category(category_name,category_alias,create_time,update_time)"+"values(#{categoryName},#{categoryAlias},#{createTime},#{updateTime})")
    void add(Category category);
}

对参数进行校验

在添加@NotEmpty,@Validated等

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这里我提供一个示例文章详情页的接口设计,包含请求参数、返回参数等信息。 ## 接口地址 ``` GET /api/article/{id} ``` 其中,`id` 为文章的唯一标识符,可以是数字或字符串等形式。 ## 请求参数 | 参数名 | 类型 | 是否必须 | 默认值 | 描述 | | ------ | ------ | -------- | ------ | ------------------- | | id | string | 是 | 无 | 文章的唯一标识符 | | fields | string | 否 | all | 返回的字段列表 | | expand | string | 否 | 无 | 扩展字段列表 | - `fields`:返回的字段列表,可以是逗号分隔的多个字段名,或者 `all` 表示返回所有字段。如果不传该参数,则默认返回所有字段。 - `expand`:扩展字段列表,可以是逗号分隔的多个字段名。扩展字段包含文章相关的其他信息,比如作者信息、评论列表等。如果不传该参数,则不返回扩展字段。 ## 返回参数 成功返回的数据结构如下: ``` { "id": "123456", // 文章ID "title": "文章标题", // 文章标题 "content": "文章内容", // 文章内容 "created_at": "2023-02-01 09:00", // 文章创建时间 "updated_at": "2023-02-05 15:30", // 文章更新时间 "author": { // 作者信息(扩展字段) "id": "7890", // 作者ID "name": "作者姓名" // 作者姓名 }, "comments": [ // 评论列表(扩展字段) { "id": "111", // 评论ID "content": "评论内容", // 评论内容 "created_at": "2023-02-03", // 评论创建时间 "user": { // 评论用户信息 "id": "222", // 用户ID "name": "用户姓名" // 用户姓名 } }, { "id": "222", "content": "评论内容", "created_at": "2023-02-04", "user": { "id": "333", "name": "用户姓名" } } ] } ``` 其中,`author` 和 `comments` 是扩展字段,只有在 `expand` 参数中包含对应字段名时才会返回。 如果文章不存在,则返回状态码为 `404`。 如果请求参数有误或服务器错误,则返回状态码为 `4xx` 或 `5xx`。具体错误信息可通过响应头或响应体的错误码和错误信息字段获得。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值