当前位置: 首页 > news >正文

接口如何设计

在企业中,前后端分离开发是一种常见的开发模式。在这种模式下,Java 程序员通常负责设计和实现后端 API 接口,而前端工程师则根据这些接口来开发用户界面和功能。

首先明确该接口是一个前后端交互接口,该接口由前端通过HTTP协议进行调用,前端去调用接口需要知道以下内容:

  1. HTTP请求方法

  2. 接口路径

  3. 请求参数类型

  4. 请求参数内容

  5. 响应结果类型

  6. 响应结果状态码

  7. 响应结果内容

所以我们设计接口需要设计这些内容。

1. HTTP请求方法

根据RESTful规范:

查询方法用GET,请求参数比较多可用POST

新增方法用POST

修改方法用PUT

删除方法用DELETE

2. 接口路径

定义为RESTful风格的路径。

接口路径为:/微服务名/客户端/具体服务/操作

        示例: /foundations/manager/serve/page

可以在类上边使用@RequestMapping指定该类中接口的路径的基础路径。

在方法中指定具体的路径。

3. 请求参数类型

3.1 json格式

application/json,传递json格式字符串,当传递的参数是属于一个对象的属性时可用此格式,比如:新增、修改时通常传递的数据是某个对象的信息就可以使用此格式。

3.2 表单格式:

application/x-www-form-urlencoded,传递key/value串,就是在url后通过?和&进行拼接的参数,比如:

/foundations/manager/serve/page?pageNo=1&pageSize=10

当传递的参数比较杂且不属于某个特定的对象时使用此格式。

4. 请求参数内容

请求参数的内容根据需求文档和界面原型去识别。

示例:

分页式查询首先有当前页码和每页显示记录数。

对于查询类的接口还有常用的参数有:排序方式、排序字段。

例如,查询某个区域下的服务需要传递一个区域id。

等。

5.响应结果类型

常见的类型有:text/html、text/plain、application/json等。

一般使用application/json。

6. 响应结果状态码

HTTP状态码是服务器返回给客户端的数字代码(三位数字),共分为五类:

1xx: 表示服务器接收到了客户端请求并正在处理

2xx: 表示成功状态码

3xx:表示重向定状态码

4xx:表示客户端错误状态码

5xx: 表示服务端错误状态码

当服务端处理成功返回200,其它表示失败。

7. 响应结果内容

响应结果内容,需要根据界面原型进行分析。

以分页查询为例:

分页查询通用的响应内容有:数据列表、总页数、总记录数;数据列表中需要分析具体的属性,根据界面原型进行分析。

制定分页查询通用的响应内容如下:

msg、code、 data(list、total、pages)是固定的;data中List数据的内容对于不同的分页查询会不一样。

分页查询响应示例:

{"msg": "OK","code": 200,"data": {"list": [{"serveTypeId": 0,"serveItemName": "","updateTime": "","saleStatus": 0,"serveItemId": 0,"referencePrice": 0,"createTime": "","regionId": 0,"price": 0,"id": 0,"isHot": 0,"serveTypeName": ""}],"total": 0,"pages": 0}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2-76 基于matlab的加权平均融合算法
  • sheng的学习笔记-AI-半监督学习
  • Kubernetes中的Kube-proxy:服务发现与负载均衡的基石
  • Java—双列集合
  • 数据库管理-第234期 2024DTCC,一场数据库盛宴(20240826)
  • debian12 - systemctl 根据状态值判断服务启动成功的依据
  • 机器学习第五十三周周报 MAG
  • 云手机解决了TikTok哪些账号运营难题?
  • 将标准输入stdin转换成命令行参数——Unix中的xargs指令
  • 手机快充头哪个牌子好?倍思65W伸缩线充电器交出优秀答卷
  • SQL注入-SQL注入基础-SQL注入流程
  • uniapp 向左滑动进入下一题,向右滑动进入上一题功能实现
  • 告警中心消息转发系统PrometheusAlert
  • 如何使用Python自动化测试工具Selenium进行网页自动化?
  • postgresql 集群文档
  • Angular2开发踩坑系列-生产环境编译
  • create-react-app项目添加less配置
  • ES6系统学习----从Apollo Client看解构赋值
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java 多线程编程之:notify 和 wait 用法
  • Java基本数据类型之Number
  • java小心机(3)| 浅析finalize()
  • PHP CLI应用的调试原理
  • React Native移动开发实战-3-实现页面间的数据传递
  • react-native 安卓真机环境搭建
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 当SetTimeout遇到了字符串
  • 复习Javascript专题(四):js中的深浅拷贝
  • 记一次删除Git记录中的大文件的过程
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 离散点最小(凸)包围边界查找
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 强力优化Rancher k8s中国区的使用体验
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 鱼骨图 - 如何绘制?
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #微信小程序:微信小程序常见的配置传值
  • (19)夹钳(用于送货)
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (ZT)薛涌:谈贫说富
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转)甲方乙方——赵民谈找工作
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • *p++,*(p++),*++p,(*p)++区别?
  • 、写入Shellcode到注册表上线
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)