当前位置:网站首页>绝了,这套RESTful API接口设计总结
绝了,这套RESTful API接口设计总结
2022-08-09 10:36:00 【华为云】
作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云星级博主
擅长领域:全栈工程师、爬虫、ACM算法
公众号:知识浅谈
联系方式vx:zsqtcc
RESTful API接口设计总结
- RESTfu是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。
- RESTful适用于移动互联网厂商作为业务接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
Restful接口使用
基于HTTP协议URL对外暴露
- 标准格式
- http(s): //域名:端口[/版本]/资源1[/子资源2/…/子资源n][/路径变量]
- 多版本控制
- GET http(s): //域名:端口/v1.1/blog/article/10
- 数据查询采用复数
- GET http(s): //域名:端口/v1.1/blog/articles?categoryId=10
- 反面典型
- GET http(s): //域名:端口/v1.1/blog/articles?categoryId=10
使用XML或JSON格式定义
要使用这种类型的返回数据。
GET http(s)://edu.lagou.com/employee/10{ "code":"0", "message":"success", "data":{ "name":"张三", "age":36 }}
不要使用带标签的如<div>name:“小王”</div> 这种带有标签的。
不同的行为使用不同的请求方式
Restful接口设计规则
接口保证幂等性
幂等性:当多次重复请求时,接口能够保证与预期相符的结果
例如:我们设计了一个为员工涨薪的接口,本次请求发送后为1号员工涨薪500元。
幂等性的设计方法:
- 前端传递token,存储在redis使用token的唯一性。
- Redis的Setnx方法,防止幂等性问题。
- 使用版本号{乐观锁}解决幂等性问题
- 使用主键的唯一性约束
标准化响应的结果集
- 在标准化的响应结构中要包含code、message两项,分别对应了服务器处理结果与返回的消息内容,除此以外data属性是可选项,包含从响应返回的额外数据,如查询结果、新增或更新后的数据。
- 在语义层面,也要遵循相同的规则例如当服务器处理成功,code固定等于0,如果遇到异常情况,公司内部也要遵循统一的code命名标准例如:code以1XX开头代表参数异常,2XX开头代表数据库处理异常。当然不同的公司有不同的命名规则,一定要提前定义好并严格要求开发团队严格按语义使用编码。
接口无状态设计
这个指的是不要在单个服务器节点上存储用户的状态信息,分布式系统中可能会出现状态不同步,所以要接口无状态。
错误例子:只有单个服务节点保存了会话状态,是不好的。
解决方案:
第 1 种: 客户端存储认证数据
第 2 种 :后台统一存储状态数据
总结
以上就是关于Restful的使用方法与使用规则。
边栏推荐
- 按键精灵之输出文本
- Shell script combat (2nd edition) / People's Posts and Telecommunications Press Script 2 Validate input: letters and numbers only
- 用Word写代码
- 深度学习--自编码器(AutoEncoder)
- 认识
- [Error record] Solve the problem that ASRock J3455-ITX cannot be turned on without a monitor plugged in
- stimulus.js 初体验
- numpy库中的函数 bincount() where() diag() all()
- 2021-01-11-雪碧图做表情管理器
- Qt 国际化翻译
猜你喜欢
深度学习--生成对抗网络(Generative Adversarial Nets)
相伴成长,彼此成就 用友U9 cloud做好制造业数智化升级的同路人
Dialogue with the DPO of a multinational consumer brand: How to start with data security compliance?See you on 8.11 Live!
shell脚本实战(第2版)/人民邮电出版社 脚本1 在PATH中查找程序
阿里神作!吃透这份资料入厂率高达99%
程序员的专属浪漫——用3D Engine 5分钟实现烟花绽放效果
Qt 国际化翻译
分类预测 | MATLAB实现CNN-GRU(卷积门控循环单元)多特征分类预测
批量转换经纬度的网页实现方法
2022强网杯WP
随机推荐
Battery modeling, analysis and optimization (Matlab code implementation)
单元测试2之实际结果检查的引用
unix系统编程 第十五章 15.2管道
Redis + NodeJS 实现一个能处理海量数据的异步任务队列系统
unix环境编程 第十五章 15.9 共享存储
1005 继续(3n+1)猜想 (25 分)
【MySQL】mysql因为字符集导致left join出现Using join buffer (Block Nested Loop)
真香!肝完Alibaba这份面试通关宝典,我成功拿下今年第15个Offer
壁纸
[贴装专题] 贴装流程中涉及到的位置关系计算
1: bubble sort
判断一段文字的width
unix环境编程 第十五章 15.10 POSIX信号量
xmms已经发布到v1.3了,好久没写博客了
MySQL备份与恢复
Win32控件--------------------WM_DRAWITEM消息测试程序
15.8 the semaphore Unix environment programming chapter 15
源代码阅读器项目
2022年台湾省矢量数据(点线面)及数字高程数据下载
Transformer+Embedding+Self-Attention原理详解