开发接口需要考虑哪些问题?
1 接口名字
user/ user/adduser/xxx
见名知意,调用接口的开发人员和后来接手的开发人员能够根据接口名称大致猜测出接口作用。
2 协议
设计接口时,应明确调用接口的协议,是采用HTTP协议,HTTPS协议还是FTP协议。比如跨语言调用通常使用WebService协议。
3 版本:v1
对于接口的url,应加版本号。
比如高德地图api:
https://webapi.amap.com/maps?v=2.0
4 路径
由于接口获取的是一种资源,所以网址中尽量为名词,而非动词
/api/pruduct/v1.0/
/api/users/v1.0
5 动作
对于restful风格的接口,可以规定动作来表示接口的意图。
- post:新建
- put:修改(修改后的全量数据)
- patch:修改(修改哪个,传哪个)
- delete:删除
- get:查询。
6 接口参数校验
入参出参校验是写程序时必不可少的步骤。设计的接口,必须先校验参数。比如入参是否允许为空,入参长度是否符合预期长度。出参返回的状态可以给予默认值,规定好错误码和异常信息,而不是将异常直接抛给前端或者第三方调用方。
7 可扩展性
如果接口类似打印日志或者记录调用信息等公共接口。除了供当前业务调用外,后续的其他业务或者功能也有可能调用。在设计此类接口的时候,应考虑后续功能的扩展性。
8 接口幂等性
对当前接口的业务功能进行分析,需要考虑是否对业务添加幂等。
具体实现参考如何实现接口幂等性
9 线程池隔离
如果所有业务都共用一个线程池,有些边缘业务出现bug或者阻塞导致线程池阻塞,重要的业务将受到影响。因此进行线程池隔离,重要业务分配多一点的核心线程,更好保护重要业务。
10 异常和超时处理
调用第三方接口,或者分布式远程服务,需要考虑异常处理,接口超时,重试次数。具体如何处理,需要根据实际业务进行具体分析。
11日志打印
提供给第三方或者调用第三方接口。
经常会因为调用结果不一致产生问题,打印调用请求参数或返回参数,出现问题时能快速排查。
12 接口安全性
如果接口是对外提供的,需要保证接口的安全性。
使用token机制代替用户名和密码。
对参数中的手机号,身份证号等隐私信息进行加密脱敏处理。
相关文章:
开发接口需要考虑哪些问题?
1 接口名字 user/ user/adduser/xxx 见名知意,调用接口的开发人员和后来接手的开发人员能够根据接口名称大致猜测出接口作用。 2 协议 设计接口时,应明确调用接口的协议,是采用HTTP协议,HTTPS协议还是FTP协议。比如跨语言调用通常使用WebS…...
关于Activiti7审批工作流绘画流程图(2)
文章目录一、25张表详解二、安装插件一.定制流程提示:以下是本篇文章正文内容,下面案例可供参考 一、25张表详解 虽然表很多,但是仔细观察,我们会发现Activiti 使用到的表都是 ACT_ 开头的。表名的第二部分用两个字母表明表的用…...
String.format()对日期进行格式化
前言:String.format()作为文本处理工具,为我们提供强大而丰富的字符串格式化功能,这里根据查阅的资料做个学习笔记,整理成如下文章,供后续复习查阅。一. format()方法的两种重载形式:format(String format,…...
核酸检测信息管理系统
目录前言一、功能与需求分析二、详细设计与实现1、data包(1)DataDataBase(2)NaPaNamePassword2、operation包(1)操作接口(2)Resident用户功能(3)Simper用户功…...
典型回溯题目 - 全排列(一、二)
典型回溯题目 - 全排列(一、二) 46. 全排列 题目链接:46. 全排列状 题目大意: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 注意:(1…...
数据清洗和特征选择
数据清洗和特征选择 数据清洗和特征挖掘的工作是在灰色框中框出的部分,即“数据清洗>特征,标注数据生成>模型学习>模型应用”中的前两个步骤。 灰色框中蓝色箭头对应的是离线处理部分。主要工作是 从原始数据,如文本、图像或者应…...
java StringBuilder 和 StringBuffer 万字详解(深度讲解)
StringBuffer类介绍和溯源StringBuffer类常用构造器和常用方法StringBuffer类 VS String类(重要)二者的本质区别(含内存图解)二者的相互转化StringBuilder类介绍和溯源StringBuilder类常用构造器和常用方法String类,St…...
【Linux】帮助文档查看方法
目录1 Linux帮助文档查看方法1.1 man1.2 内建命令(help)1 Linux帮助文档查看方法 1.1 man man 是 Linux 提供的一个手册,包含了绝大部分的命令、函数使用说明。 该手册分成很多章节(section),使用 man 时可以指定不同的章节来浏…...
UEFI 实战(2) HelloWorld 之一 helloworld及.inf文件
初识UEFI 按惯例,首先让我们用HelloWorld跟UEFI打个招呼吧 标准application /*main.c */ #include <Uefi.h> EFI_STATUS UefiMain ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { SystemTable -> ConOut-> OutputString(SystemTab…...
向2022年度商界木兰上榜女性致敬!
目录 信息来源: 2022年度商界木兰名单 简介 评选标准 动态 榜单 为你心中的2023商界女神投上一票 信息来源: 2022年度商界木兰榜公布 华为孟晚舟获商界木兰最高分 - 脉脉 【最具影响力女性】历届商界木兰榜单 中国最具影响力的30位商界女性名单…...
ChatGPT助力校招----面试问题分享(二)
1 ChatGPT每日一题:DC-DC与LDO的区别 问题:介绍一下DC-DC与LDO的区别 ChatGPT:DC-DC和LDO都是电源管理电路,它们的主要作用是将输入电压转换为所需的输出电压,以供电子设备使用。但是,它们之间存在一些重…...
JAVA架构与开发(JAVA架构是需要考虑的几个问题)
在企业中JAVA架构师主要负责企业项目技术架构,企业技术战略制定,技术框架搭建,技术培训和技术攻坚的工作。 在JAVA领域,比较多的都是web项目。用于解决企业的数字化转型。对于JAVA架构师而言,平时对项目的架构主要考虑…...
vue 中 v-for 的使用
v-for 获取列表的前 n 条、中间范围、末尾 n 条的数据 list: [{ img: /static/home/news1.png, title: 标题1 },{ img: /static/home/news2.png, title: 标题2 },{ img: /static/home/news1.png, title: 标题3 },{ img: /static/home/news2.png, title: 标题4 },{ img: /stati…...
项目--基于RTSP协议的简易服务器开发(2)
一、项目创立初衷: 由于之前学过计算机网络的相关知识,了解了计算机网络的基本工作原理,对于主流的协议有一定的了解。但对于应用层的协议还知之甚少,因此我去了解了下目前主要的应用层传输协议,发现RTSP(…...
ubus编译_环境搭建
文章目录一、环境搭建脚本toolChain_jsonc.cmaketoolChain_libubox.cmaketoolChain_ubus.cmakeinstall.sh二、测试出现问题:三、测试uloopmain.c 每5s打印信息一、环境搭建脚本 准备四个文件 install.sh,toolChain_jsonc.cmake,toolChain_libubox.cmake,toolChai…...
移动通信(16)信号检测
常见的信号检测算法一般包括以下几类检测算法:最优、线性和非线性。最优检测算法:最大似然算法线性检测算法:迫零检测算法和最小均方误差检测算法非线性检测算法:串行干扰消除检测算法球形译码检测算法属于一种次优检测算法&#…...
数据结构与算法之《顺序表》
目录 1.什么是顺序表 顺序表的优势和缺点 顺序表预备知识 顺序表的代码实现 顺序表头部插入 顺序表的销毁 顺序表的头删 顺序表的尾删 顺序表的尾插 顺序表的任意位置插入 顺序表的查找 顺序表的打印 1.什么是顺序表 这篇文章我们来讲一下基础数据结构的顺序表&…...
MySQL索引15连问,抗住!
1. 索引是什么?索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中,它是占用物理空间的。正所谓水能载舟,也能覆舟。适当的索引能提高查询效率&#x…...
【服务器管理】手动部署LNMP环境(CentOS 8)(非阿里云版本)
简述 如果是你是阿里云的服务器,我推荐你看引用的文章,本文也是参考了很多这篇文章的内容。 https://help.aliyun.com/document_detail/173042.htm 系统版本: CentOS 8 其实CentOS 7的版本可能更好安装一点,但是我有个服务推荐使…...
论文笔记:Positive-incentive Noise
2022 TNNLS 中心思想是:噪声并不一定是有害的 1 CV问题中的噪声 以图像分类为例 对图像加入适量的噪声后再训练,识别准确率反而上升了 再以目标检测为例: 从遥感影像中做飞机检测,一般都是把飞机紧紧框住,然后做…...
广义可加模型(GAMs)性能实测:可解释机器学习如何兼顾精度与透明度
1. 项目概述:当可解释性成为硬通货,GAMs如何破局? 在医疗诊断、信贷审批、司法风险评估这些“高风险”领域,一个预测模型如果只告诉你“结果是A”,却无法解释“为什么是A”,那它几乎毫无价值。决策者需要的…...
边缘计算融合触觉互联网与数字孪生:构建超低延迟人机交互框架
1. 项目概述与核心价值最近几年,我一直在关注一个技术融合的交叉点:当边缘计算、触觉通信和数字孪生这三个看似独立的领域碰撞在一起时,会擦出什么样的火花?这个项目——“边缘计算赋能触觉互联网:构建沉浸式人机交互的…...
手把手教你用Python+OpenBMI复现运动想象BCI实验(附完整代码与数据集)
Python实战:从OpenBMI到运动想象脑机接口的全流程复现指南在认知科学与脑机接口(BCI)研究领域,运动想象(Motor Imagery)实验一直是经典范式。传统上,这类实验多依赖Matlab生态完成,但随着Python在科学计算领域的崛起,越…...
2026年5月4日 OCS技术方案路线选择与优劣深度调研报告
OCS技术方案路线选择与优劣深度调研报告 核心结论 光电路交换(OCS)正从Google的"独家方案"演变为AI算力网络的通用基础设施。Google TPU v8i采用的Boardfly架构首次将OCS引入大规模MoE推理场景,标志着OCS应用从训练侧向推理侧的跨…...
LeetCode 930:和相同的二元子数组 | 前缀和与哈希表
LeetCode 930:和相同的二元子数组 | 前缀和与哈希表 引言 和相同的二元子数组(Binary Subarrays With Sum)是 LeetCode 第 930 题,难度为 Medium。题目要求在二元数组(元素只有 0 和 1)中找出子数组和等于 …...
边缘计算部署:将计算能力延伸到网络边缘
边缘计算部署:将计算能力延伸到网络边缘 一、边缘计算部署概述 1.1 边缘计算部署的定义 边缘计算部署是指将计算资源和应用服务部署到靠近数据源或用户的网络边缘位置的过程。它通过在边缘位置处理数据,减少延迟,提高响应速度,并降…...
手把手教你学 Simulink-- 开关磁阻电机(SRM)的转矩分配函数(TSF)控制仿真
目录 手把手教你学 Simulink-- 开关磁阻电机(SRM)的转矩分配函数(TSF)控制仿真 🔥 前言:为什么选 SRM+TSF? 一、SRM 基础:12/8 极结构与数学模型 1.1 电压方程(第 k 相) 1.2 转矩方程(强非线性) 二、TSF 核心原理:一句话讲透 2.1 四种常用 TSF 公式(含参数…...
水纹真实度提升300%的关键技巧,深度拆解--style raw、--chaos 45与自定义tile texture协同机制
更多请点击: https://kaifayun.com 第一章:水纹真实度提升300%的关键技巧,深度拆解--style raw、--chaos 45与自定义tile texture协同机制 水纹渲染的真实感跃升并非依赖单一参数调优,而是三重机制在纹理生成管线中的精准耦合&am…...
AI医疗Agent如何72小时通过NMPA二类证审批:附2024最新审评问答清单与材料模板
更多请点击: https://intelliparadigm.com 第一章:AI医疗Agent的监管合规本质与NMPA二类证核心逻辑 AI医疗Agent并非通用大模型的简单应用延伸,而是以临床决策支持、病灶识别、报告生成等具体医疗器械功能为边界的技术实体。其监管合规本质在…...
HarmonyOS 鸿蒙PC平台三方库移植:使用 vcpkg 移植 libzen(ZenLib)
网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…...
