首页 > 其他分享 >接口规范

接口规范

时间:2024-07-01 17:09:28浏览次数:15  
标签:前缀 quot 对象 规范 接口 命名 方法

接口前缀

接口前缀由/{环境前缀}/[版本号]/[调用客户端标识]/{模块}构成,花括号内容必须项,中括号内容为建议项,url必须以“/”开始

环境前缀

  • local-api 本地环境前缀(建议)
  • dev-api 开发环境前缀
  • test-api 测试环境前缀
  • pre-api 预发环境前缀
  • prod-api 线上环境前缀

    版本号

    由于存在老接口兼容问题,暂不考虑版本号

    调用客户端标识

    由于存在老接口兼容问题,暂不考虑版本号
  • /app/medicine或/app/ 医生移动端接口前缀
  • /app/patient 患者移动端接口前缀
  • pc端不做限制

    模块

    模块二级名称,如:im,iam,system等
    注:本文档后续的接口举例中,除特殊说明外,忽略接口前缀

    接口分级

    接口分为一级,二级及三级
  • 一级: 患者移动端接口,稳定性要求99.9%,时间基线1s,设计并发量不低于5000,如需校验登录用户,应该在controller方法上加上@RequiresLogin(userTypes = UserTypeEnum.PATIENT)
  • 二级:医生端移动接口,稳定性要求99.9%,时间基线2s,设计并发量不低于1000,如需校验登录用户,应该在controller方法上加上@RequiresLogin(userTypes = UserTypeEnum.MEDICINE)
  • 三级:PC管理端接口,稳定性要求99%,时间基线3s,上传和导出接口可适当放宽至10s,优化后超过10s的数据处理应该通过其他途径处理,如批量计算,定时处理或数据平台等,设计并发量不低于500,如需校验登录用户,应该在controller方法上加上@RequiresLogin(userTypes = UserTypeEnum.MANAGER)
    当一个接口同时被以上各个客户端调用时,分级遵从从严规则。
    注:@RequiresLogin(userTypes = UserTypeEnum.xxx)可以加在controller类上,加载类上表示该类中的所有接口访问时都会校验用户类型为xxx,另外userTypes参数可以传多个,传多个时表示只要用户满足其中一种类型,即可访问

    接口方法

    接口方法允许get,post,put及delete方法
  • get方法标注接口时,表明该接口安全(不会对数据库数据造成修改)并且幂等(该接口调用一次和多次效果一致),适用于查询类接口
  • post方法标注接口时,表明该接口既不安全,也不幂等,适用于新增接口
  • put方法标注接口时,表明该接口不安全,但幂等,适用于更新接口
  • delete方法标注接口时,表明该接口不安全,但幂等,适用于删除接口
    注:如果更新接口不幂等,如:/minotor/switch,调用该接口,总是取反设备的启停状态,此时不适用put方法,而应该定义为post方法。

    接口命名

    接口命名参照restful命名规范,但不一定需要严格遵从该规范。比如,restful命名规范不建议使用动词,但在某些情况下,使用动能能让人直观了解接口的作用,例如启动某台设备,可以命名为:/monitor/start/{monitorId};闭关某台设备,可以命名为:/monitor/stop/{monitorId}。下面是在尽量兼顾老接口的基础上,对部分接口命名的一些具体规定。
  • 对象列表(分页)查询:/对象名/list,使用get方法
  • 对象详情查询:/对象名/{id},使用get方法
  • 对象批量导出:/对象名/{export} ,使用post方法
  • 对象批量导入:/对象名/{import} ,使用post方法
  • 新增对象:/对象名 ,使用post方法
  • 更新对象:/对象名 ,使用put方法
  • 批量删除对象:/对象名 使用delete方法
  • 删除对象:/对象名/{id} 使用delete方法
  • 其他方法视具体情况命名,命名中允许使用动词,遵从从简原则,但应尽量能直观反应出接口的含义
    另外,接口命名应该遵从一下规则:
  • 严禁使用大写或中文
  • URI开头必须包含(/)
  • URI结尾不应包含(/)
  • 多个单词之间必须使用(/)分割

    接口参数

  • 提供给客户端的接口,如果需要登录后才能访问的接口,登录标识符传递在header中,并且命名为Authorization
  • 微服务内部调用接口,如果接口需要登录用户信息时,应该显式声明,被调用者无义务传递Authorization header
  • 微服务内部调用接口,应该通过固定密钥校验调用者,如果存在敏感数据,应该使用签名校验调用者
  • 如无特殊情况,接口中日期统一传递yyyy-MM-dd HH:mm:ss

    返回值

  • 返回值统一使用R类,严禁使用AjaxResult类,
  • 返回值格式如下:
    {
    "msg": "操作成功", //请求提示语
    "code": 200, //http请求状态码
    "data": null //业务数据
    }
    返回值中,code值为200时表示接口调用成功;
    
  • 接口返回的业务数据因该避免冗余字段,例如:接口返回了alias字段,值为null,但实际上数据库中该字段值不为null,只是接口没有查询,这就造成了数据不一致问题。后端应通过定义dto类来尽量避免这种情况,尤其对于远程联调的接口尤其如此!
  • 如无特殊情况,接口中日期统一返回yyyy-MM-dd HH:mm:ss

标签:前缀,quot,对象,规范,接口,命名,方法
From: https://www.cnblogs.com/coder-and-coder/p/18278454

相关文章

  • ros micro-ros 自定义消息接口
    本节课最终效果是:通过自定义的服务接口控制开发板上的OLED显示器的内容。ros2servicecall/oled_controlfishbot_interfaces/srv/OledControl"{px:0,py:0,data:'oledcontrolbyservice~'}" 一、新建工程添加依赖新建example14_custom_interface,注意请不要将工......
  • Google命名规范
    Google风格指南中的C#|风格指南---C#atGoogleStyleGuide|styleguide命名规则Code 1.类、方法、枚举、公共字段、公共属性、命名空间的名称: PascalCase 2.局部变量、参数的名称: camelCase 3.私有、受保护、内部和受保护的内部字段和属性的名称: _camelCase4.......
  • Java身份证实名认证、身份证识别接口让您认证任性的“懒”
    “懒”这个字大多时候是贬义的,但是如果利用好“懒”的特点,就能有不一样的效果。最近几年成功的互联网产品,虽然领域不同,但有一个共同的特点:显著降低了用户获得产品和服务的成本,进而取得成功。不可否认,有不少的产品就是利用了用户越来越“懒”的特点。现在比较火的小视频AP......
  • SpringBoot自定义注解实现接口幂等
    一、前言接口幂等就是对一个接口执行重复的多次请求,与一次请求所产生的结果是相同的。对数据库的查询和删除是天然幂等的,更新操作在大多数场景下也是天然幂等。插入大多数情况下都是非幂等的,除非利用数据库的唯一索引来保证数据不会重复保存。二、为什么需要幂等1.超时重试......
  • 前端vue/react通用工程化eslint prettier stylelint husky项目规范(新手入门详细教程)
    前言本文章内的项目基于vite+react+ts搭建,但通篇并未涉及react的东西,所以可以通用。适合新手入门的工程化项目规范,最小化的完成代码规范和git提交规范,开发工具使用vscode。为什么是最小化?本意是为了让大家都能看懂入手这些规范,很多文章中,都长篇进行自定义的配置,其......
  • 揭秘工作手机使用管理办法:打造规范、高效的工作环境
    点击这里可进入官网——【无极工作手机官网】http://rpaab.com随着科技的飞速发展和智能手机的普及,工作手机已经成为现代职场中不可或缺的一部分。然而,如何有效地管理工作手机使用,确保其在提高工作效率的同时,不干扰到正常的工作秩序和员工的私人生活,成为了一个亟待解决的问题......
  • [淘宝/天猫/1688/京东]API接口数据采集分享
    在当今时代,从数据中挖掘价值的重要性愈发凸显,远超以往任何时期。随着新冠疫情的席卷,所有B2B公司都迎来了前所未有的挑战,它们不得不迅速将业务转移到线上的电子商务平台,以加速数字化转型的步伐。而随着疫情的逐渐缓解,这种线上线下的融合趋势非但没有减弱,反而得到了进一步的强化。......
  • 操作系统的接口以及实现
    目录操作系统的接口以及实现接口接口的定义系统调用的实现直观实现内核(用户)态,内核(用户)段系统调用的核心int0x80操作系统的接口以及实现接口接口的定义对于用户而言,使用计算机的方式有三种:1.命令行:linux中常用这种方式2.图形按钮:通过鼠标点击操作实现操控,例如windows3.应......
  • 设计NOR Flash(SPI接口)的Flashloader(MCU: stm32f4)
    目录概述1软硬件1.1软硬件信息表1.2NORFlash芯片(W25Q64BVSSI)1.2.1W25Q64BVSSI芯片介绍1.2.2NORFlash接口1.3MCU与NORFlash接口2SPIFlash功能实现2.1软件框架结构2.2代码实现2.2.1 Dev_Inf文件2.2.2W25QXX驱动程序2.3Flashloader驱动接口程序3K......
  • 智能小程序 Ray 开发蓝牙设备API —— 单点蓝牙 API 接口汇总(五)
    postBLEBigDataChannelWithProgress大数据通道操作,支持进度反馈引入import{postBLEBigDataChannelWithProgress}from'@ray-js/ray';需引入DeviceKit,且在>=3.0.0版本才可使用参数Objectobject属性类型默认值必填说明deviceIdstring是deviceId设备idrequestPa......