api接口设计

API接口设计方案 4.增强型客户端-服务器模式:增强型客户端-服务器模式是指API接口由一个客户端应用程序和一个增强型服务器应用程序提供,客户端应用程序通过调用增强型服务器应用程序的API接口来实现与应用程序的交互。2.客户端-服务器模式:客户端-服务器模式是指API接口由一个客户端应用程序和一个服务器应用程序提供,客户端应用程序通过调用服务器应用程序的API接口来实现与应用程序的交互。1.中心化模式:中心化模式是指API接口由一个中心化的组件提供,其他组件通过调用中心化组件的API接口来实现与应用程序的交互。 阅读详情

api接口设计

健壮性

  1. 对外提供的接口,最好支持幂等性,即相同的请求重复调用,服务端的操作应该只有一次,并且每次返回的结果应该是一样的。
    一般的做法是要求客户端在每次调用的时候带上唯一键,服务端第一次正常处理,并缓存唯一键和结果,后面再有重复调用,即可直接获取缓存结果返回。
    如果客户端没有唯一键的条件,也可以要求传时间戳,用时间戳作为唯一键。
  2. 对外的接口,粒度能细就细,最好不要是那种入参是type,然后服务端根据type类型返回不同的数据,这样容易被调用方猜到一些服务端不想暴漏的内容。
    举个例子,比如你要对外提供字典接口。 你的service方法是入参type, type=country,就返回所有国家字典;
    type=currency,就返回所有币种字典。
    其实你只想对外暴漏这两个功能,但其实你的service还支持type=company,就返回所有公司,
    这个你是不想对外暴漏的,但有可能会被调用方猜到,从而获取了隐私数据。
    所以这种情况,就应该把接口拆开,比如获取国家就是一个接口,获取币种就是另外一个接口。
  3. 接口的入参,最好是包好的dto,这个不用多说,接口升级的时候,不会影响到用旧版本的客户端,便于扩展。
  4. 接口的出参,尽可能的少,没用的字段一定不要加,因为考虑到以后接口维护的时候,加字段好加,减字段可不好减。
  5. 接口的出参,服务不要把异常直接抛出来,一定要加全局异常捕获,明确指定不同类型的出参码,比如调用错误是什么,参数错误是什么等等。
  6. 单一职责,一个接口应该是专门给一个功能或者一类特定功能用的,避免接口复用,这个也是扩展性问题。
  7. 命名要统一,一定要有全局意识。比如所有的查询都是find开头,所有的查列表都是以list结尾,所有的分页都是currentPage+pageSize等等
  8. 命名要准确,随便用汉字拼音首字母命名都是一种不负责任的做法

安全性

  1. 上面有提到用时间戳作为请求唯一键,可以做幂等。其实用时间戳,还有个好处,就是可以判断是不是截取url的恶意调用。
    因为我们可以判断当前时间和时间戳的间隔,如果大于某个值,比如大于5秒,我们就判定这个url无效。 这样可以有效的抵挡一部分的DOS攻击。
  2. 如果调用方很确定,并且数量不多的话,直接配置ip白名单,简单高效。
  3. 再复杂的设计,比如签名验证,但个人觉得这个普通场景没什么必要,增加复杂度,
    但安全度极高的场景,是必加的,而且至少要token+时间戳的签名,token是客户端的身份证明。
RESTful API接口设计规范 把当前用户需要在第一时间内容加载的多个接口合并成一个请求发送到服务端,服务端根据请求内容,一次性把所有数据合并返回,相比于页面级API,具备更高的灵活性,同时又能很容易的实现页面级的API功能。data:[简单来说就是url地址中只包含名词表示资源,使用http动词表示动作进行操作资源下面几个例子:左边是错误的设计,而右边是正确的。 阅读详情

相关推荐

API接口设计的18条规范

自己总结的http api接口设计的18条规范

ThinkPet 3607

API接口设计

API接口设计

m0_56344192的博客 477

API 接口管理 架构 api接口设计

sign是参数签名,将appId,nonce,timestamp,还有其余非空请求参数,按照字母升序排列,然后使用URL键值对的格式(key1=value1&key2=value2)拼接起来,最后再拼接上appKey,组成待签名串;获取所有请求参数,不包括字节类型参数(如文件,字节流),剔除sign参数和值为空的参数,并且参数名和参数值前后不要带有空格,并按照参数名的第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推;

Bard的博客 3020

如何设计API接口

RESTful风格的API 固然很好很规范,但大多数互联网公司并没有按照或者完全按照其规则来设计,因为REST是一种风格,而不是一种约束或规则,过于理想的RESTful API 会付出太多的成本。

2301_79965602的博客 3450

【Django】RESTful API接口设计风格_restful api接口风格

如果状态码是4xx,服务器就应该向⽤户返回出错信息。DELETE http://xxx.com:8080/dalete/articles(删除文章)http://xxx.com:8080/delete/deleteArticle (删除文章)PUT http://xxx.com:8080/update/articles(新增文章)POST http://xxx.com:8080/post/articles(新增文章)GET http://xxx.com:8080/get/articles(查询文章)

2401_89191942的博客 868

【运筹优化】VRPTW建模实战:Python+Gurobi求解带时间窗的车辆路径规划

本文详细介绍了如何使用Python和Gurobi求解带时间窗的车辆路径问题(VRPTW)。通过将物流调度难题抽象为混合整数规划模型,并逐步讲解建模、编码与求解过程,为读者提供了从理论到实践的完整指南,帮助解决物流配送中的路径优化挑战。

peace的博客 201

理论 | 优雅的构建一个健壮的API接口

小小工作繁忙,不过还好,这次学习的内容是接口幂等性相关的内容,幂等性这里使用的是幂等性相关的内容进行学习。针对幂等性实现构建一个健壮的API接口的第一步,即,幂等性的构建定义小小对接口的...

mySoul 531

STM32CubeMX安装避坑指南:为什么你的Java环境总是报错?

本文针对STM32CubeMX安装过程中最常见的Java环境报错问题,提供了一套完整的诊断与解决方案。文章深入剖析了JRE版本冲突、环境变量配置错误、路径权限等核心原因,并给出了从系统级检查到手动修正环境变量的详细步骤,帮助开发者彻底解决安装难题,顺利开启STM32开发之旅。

prometheus9mon的博客 226

优秀的API接口设计原则及方法

一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的。如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的打击就更大。如果API经常发生变化,用户就会失去对提供方失去信心,从而也会影响目前的业务。 但是我们为什么还要修改API呢?为了API看起来更加漂亮?为了提供更多功能?为了提供更好的性能?还是仅仅觉...

春风化雨 2万+

ANSYS Workbench实战:用网格自适应搞定超弹性橡胶大变形仿真(附避坑命令流)

本文深入探讨了ANSYS Workbench中超弹性橡胶大变形仿真的网格自适应技术,重点解析了混合U-P单元的应用、非线性自适应网格的实战技巧及材料模型选择的注意事项。通过具体案例和命令流示例,帮助工程师有效解决橡胶仿真中的收敛问题和网格畸变挑战,提升仿真精度和效率。

weixin_42666036的博客 303

告别IMEI!手把手教你用UUID实现Android设备唯一标识(兼容Android 10-13)

本文详细探讨了在Android 10及以上版本中,如何构建合规且高可用的设备唯一标识方案以替代被限制访问的IMEI。文章深入分析了Android设备标识符的演变,并提供了基于UUID/GUID的完整实现策略,包括生成算法、多级持久化存储方案(如MediaStore)、权限处理以及版本兼容性实践,帮助开发者应对Android 10-13的隐私政策变化。

weixin_28339967的博客 575

API接口设计规范文档

API接口设计规范文档 【下载地址】API接口设计规范文档分享 本仓库提供了一个名为“API接口设计规范.docx”的资源文件下载。该文件详细阐述了API接口开发的最佳实践和规范,旨在帮助开发者在设计和实现API接口时遵循一致的标准,从而提高开发效率和代码质量 ...

gitblog_06612的博客 721

SAP农产品增值税进项税解决方案

(三)购进农产品用于生产经营且不构成货物实体的(包括包装物、辅助材料、燃料、低值易耗品等),用于生产适用13%税率货物的扣除率为10%,用于生产适用9%税率货物的扣除率为9%。具体计算公式为: 当期允许抵扣农产品增值税进项税额=当期耗用农产品数量×农产品平均购买单价×扣除率/(1+9%)

weixin_44228539的博客 1196

API 接口设计规范

这篇文章分享 API 接口设计规范,目的是提供给研发人员做参考。规范是死的,人是活的,希望自己定的规范,不要被打脸。

APItesterCris的博客 701

LVGL实战 透视卡盘

八张卡立在一个圆柱面上,摄像机在柱心前方。每帧对屏幕上的每个像素发一条射线,与卡片所在平面求交,得到三维交点,再投影回卡片自己的二维坐标系取样。透视、倾斜、近大远小、相互遮挡 —— 全部是这一步的副产物。

摸鱼专家 55

AutoSAR从0开始实战 --- 目录

​​​​​​本专栏是全网最真实的AutoSAR实战专栏,博主将从一个0基础小白的身份来讲解AutoSAR工具的配置,以及相应代码的讲解。

wj博客 1729

API接口设计要考虑的因素

一、接口版本化二、请求参数的规范性三、请求参数的统一处理四、返回码及信息提示的规范性五、返回参数类型及格式的规范性六、接口安全验证七、接口调用频率的限制...

vbird的博客 4924

【YOLOs-CPP-图像分类部署】04-项目优化(加速部署)

本文详细介绍了将YOLO图像分类C++部署项目从CMake迁移到Visual Studio控制台应用的全过程。针对低配CPU性能瓶颈问题,作者通过替换多线程HPP代码为官方实现,并采用448x448固定输入尺寸优化推理速度。项目配置包含OpenCV和ONNX Runtime环境设置,实现了图像批量处理、分类结果显示及结果日志输出功能。关键步骤包括依赖库配置、DLL部署和代码调试,最终在Windows平台成功实现高效CPU推理。该方案显著提升了低配硬件的兼容性,为图像分类任务提供了稳定的部署解决方案。

深耕CV 354

API接口设计原则与应用实践

API接口设计原则与实践摘要 本文介绍了基于SOLID原则的API接口设计最佳实践。SOLID原则包含:单一职责原则(SRP)强调接口功能单一化;开闭原则(OCP)提倡通过扩展而非修改实现新功能;里氏替换原则(LSP)要求子类可完全替代父类;接口隔离原则(ISP)避免客户端依赖不需要的方法;依赖反转原则(DIP)主张高层与底层模块共同依赖抽象。文章通过具体代码示例展示了如何应用这些原则,如支付接口的设计、打印机接口的拆分等,帮助开发者构建高内聚、低耦合的系统架构,提升代码的可维护性和扩展性。

一名80后IT人的成长记录,记录自己在工作、学习中的点点滴滴,在成长的喜悦与忧心的故事里,铭记反脆弱的勇气。 1223

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【免费下载】 API 接口设计文档模板

API 接口设计文档模板 【下载地址】API接口设计文档模板分享 API 接口设计文档模板 项目地址: https://gitcode.com/Open-source-documentation-tutorial/42c8b ...

gitblog_06656的博客 2433

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

搞懂 API ,后端 API 接口设计方法

后端 API 接口设计是开发 Web 应用和移动应用的关键组成部分,好的接口设计可以提高应用的稳定性、可维护性和安全性。以下是一些常用的后端 API 接口设计方法:

qq_42107247的博客 1688

高质量API接口设计

引言 高质量API接口定义 前后端分离的架构的好处就是前端后端可以依据需求同时开工,可以提升工作效率,但这里有个非常重要的前提就是,必须得把接口文档搞定,前后端才可以一起开发。接口文档不但要有,而且要根据需求确定详细的接口内容(一般包含:接口访问地址,访问方式,提交的数据和返回的数据)。 有了接口文档,前端可以Mock数据,不影响开发。前端开发完毕后再和后端联调。 接口定义由后端人员给出,接口设计关键在于对业务的理解。业务整体变,导致接口也会随之做调整。所以从需求层面要尽量减少变更 是否要做接口设计评

u014340331的博客 906
上一篇: redis 常见基础面试题
下一篇: 【转载】广告系统架构解密
zhangSir134
博客等级 码龄9年 7969粉丝 246原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值