开发接口需要考虑哪些问题?
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问题中的噪声 以图像分类为例 对图像加入适量的噪声后再训练,识别准确率反而上升了 再以目标检测为例: 从遥感影像中做飞机检测,一般都是把飞机紧紧框住,然后做…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
