根据原型设计接口实例

129 阅读3分钟

image.png

image.png

接口包括(分页查询,新增,根据id查找,修改,删除,启用和禁用,上传图片)

前言:

如何设计一个接口

现在我们确定了具体的接口,那么我们该如何设计一个接口呢?

首先,我们需要知道接口的基本组成部分,以此来编写接口文档,方便前后端同步

接口的组成部分,都包含了必要的四项:请求路径、请求方式、入参、出参

  • 请求路径,请求的资源路径,比如,

    • 我们现在开发护理项目,一般开头就是/nursing_project
    • 如果是新增,可以使用拼接路径区分:/nursing_project/add
  • 请求方式,需要符合restful风格

    • 查询 GET
    • 新增 POST
    • 修改 PUT
    • 删除 DELETE
  • 入参,接口接收的请求参数,目前使用springmvc通常包含三种

    • 路径上的参数

      • 问号传参,例如:/nursing_project?status=1 ,直接接收
      • path传参 ,例如:/nursing_project/status/1 ,@RequestParam
    • 请求体参数,加@RequestBody接收

      {
          "name":"洗脚",
          "status":1
      }
      
  • 出参,前后端分离开发,通常都会返回json格式,如下:

    • 基本的返回

      {
          "code": 200,
          "msg": "操作成功",
          "data": {
              "id": "41",
              "createTime": "2023-07-31 11:36:37",
              "createBy": "1671403256519078006",
              "planName": "额的发挥",
              "status": 1,
          }
      }
      

      code:响应状态码

      msg:接口请求提示信息(成功 | 失败)

      data:具体返回的数据

    • 分页的数据返回

      {
          "code": 200,
          "msg": "操作成功",
          "data": {
              "total": "26",
              "pageSize": 10,
              "pages": "3",
              "page": 1,
              "records": [
                  {
                      "id": "42",
                      "createTime": "2023-07-31 15:13:44",
                      "updateTime": "2023-08-04 19:22:51",
                      "createBy": "1671403256519078006",
                      "updateBy": "1671403256519078006",
                      "creator": "小烁-副院长",
                      "name": "烁烁的豪华项目",
                      "orderNo": 1,
                      "unit": "次",
                      "price": 1000000.00,
                      "image": "https://yjy-slwl-oss.oss-cn-hangzhou.aliyuncs.com/8469d42d-329c-4200-9019-358cb806d75c.png",
                      "nursingRequirement": "你付款吧,保你满意888",
                      "status": 1,
                      "count": 0
                  }
              ]
          }
      }
      

      分页数据又包含了关于分页的字段

      • total 总条数
      • pageSize 每页调试条数
      • pages 总页数
      • page 当前页码
      • records 分页后的数据列表

接口入参和出参的对象概念:

  • DTO:Data Transfer Object数据传输对象:xxxDto或者xxxDTO,xxx为业务领域相关的名称。接口的入参

  • VO:Value Object展示对象:xxxVO或者xxxVo,xxx一般为网页名称。接口的出参,同时,如果有不想展示给前端的数据,也可以通过vo过滤,如果通过id返回名字,也可以通过vo。

image.png

设计
    1. 查询接口(模糊查询): 要护理名称,状态查询,当前页,每页显示条数 这些param,所以 接口地址使用/nursing_project,使用Get请求,返回分页接口数据。
    1. 新增接口: 接口地址/nursing_project,使用Post因为根据原型,就是需要
{
  "id": 0,
  "image": "",
  "name": "",
  "nursingRequirement": "",
  "orderNo": 0,
  "price": 0,
  "remark": "",
  "status": 0,
  "unit": ""
}
    1. 编辑接口:接口地址/nursing_project,使用Put,因为是要修改。传入参数与
    1. 启用禁用接口:接口地址/nursing_project/{id}/status/{status},使用Put,参数要包括(id,status)
    1. 删除接口:接口地址/nursing_project/{id},请求方式DELETE.
功能开发

现在我们需要确定的是后台代码的具体的开发步骤,一个良好的步骤,可以增加我们的开发效率

  • controller的基本定义(接口四要素)
  • mapper接口和映射文件
  • 业务层代码编写
  • 单元测试
  • 业务层对接控制层
  • 接口测试