RESTful接口规范参考

介绍

  • REST(Representational State Transfe),一种架构设计风格,而不是强制标准,主要用于客户端与服务端接口规范;
  • 在现代的软件开发中,RESTful API已经成为应用程序之间通信的重要桥梁,互联网公司也更倾向于实践此风格;
  • 核心是面向资源,每个网址代表一种资源(URI),具有解释性;
  • 行为(GET / POST / PUT / PATCH / DELETE)与资源(URI)分离,更加轻量;
  • 数据描述简单,使⽤JSON、XML、PROTOBUFFER即可全覆盖,主要使⽤JSON;

设计规范

  • 安全

API与⽤户的通信协议,⼀般使⽤HTTP协议,更安全情况下使⽤HTTPS;

  • 域名

应该尽量将API部署在专⽤域名之下,比如api.example.com

  • 版本

在每个API对应的URL中,应有⼀个版本号,以便将来服务升级后,所有版本的客户端可以正常使用,例如/api/v1/xxx

  • 命名

核心是面向资源,每个网址代表一种资源,网址中尽量使用名词,避免动词。
资源对应的是数据库中的集合,所以名词尽量使用复数,除非没有合适的复数形式(如 weather)。

  • 请求方式
请求方式示例说明
GET/teams/{id}读取
POST/teams新建,通常带有 Body
PUT/teams/{id}更新,全量更新,通常带有 Body
PATCH/teams/{id}更新,部分更新,通常带有 Body
DELETE/teams/{id}删除

行业参考

  • 佳明接口文档

https://developers.strava.com/playground/#/
image.png

最佳实践

GET

读取。
示例:

get /teams # 获取车队列表
get /teams/list # 同上,获取车队列表
get /teams?page=1&size=10&search=武汉 # 分页搜索列表

get /teams/{id} # 获取车队id为{id}的详情
get /teams/{id}/detail # 同上,获取车队id为{id}的详情

get /teams/{id}/members # 获取车队id为{id}下的成员列表

POST

新建。
一个参数可放在路径参数,多个参数必须放到 body 中。
示例:

post /teams/{name} # 新建车队,仅有名称

post /teams # 新建车队
# body
{
"name": "武汉车队",
"number": 8888
}

PUT

更新。
put 通常指全部更新,patch 通常指部分更新,一搬支持 put 即可。
示例:

put /teams/{id} # 修改车队id为{id}的信息
# body
{
"id": 123,
"name": "武汉车队Plus",
"number": 9999
}

DELETE

删除。
示例:

delete /teams/{id} # 删除车队id为{id}的车队

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/450590.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

淘宝扭蛋机小程序开发:惊喜与趣味,尽在一扭之间

随着移动互联网的快速发展,小程序作为一种轻量级、便捷的应用形式,受到了广大用户的青睐。为了满足淘宝用户对新鲜、有趣购物体验的需求,我们倾力打造了淘宝扭蛋机小程序,为用户带来全新的购物乐趣和惊喜体验。 淘宝扭蛋机小程序…

【JavaScript标准内置对象】Math的介绍。

简言 js与其他高级语言一样,也可以进行数学运算。 Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。 Math 用于 Number 类型。它不支持 BigInt。 Math 与其他全局对象不同的是,Math 不是一个构造器。Ma…

CANalyzer使用_02 测试环境搭建

本文主要介绍CANalyzer测试环境的搭建。主要是硬件方面,软件方面要跟着进行配合。根据ISO 11898标准,如果是高速,记得要加120Ω的终端电阻。 1 两个CAN短接 如下图所示,用两端都是DB9的线将VN1630A的CH1和CH2的端口短接。VN1630…

SpringSecurity 快速入门

文章目录 1. 认证授权概述1.1 认证授权概念1.1.1 认证1.1.2 授权 1.2 权限数据模型1.3 RBAC权限模型1.3.1 介绍1.3.2 基于角色访问控制1.3.3 基于资源访问控制 1.4 常见认证方式1.4.1 Cookie-Session1.4.2 jwt令牌无状态认证 1.5 技术实现 2. SpringSecurity入门2.1 介绍2.2 入…

人数统计显示屏对粉尘车间人员进出管理

2022年1月20日,江苏省常州市某公司的粉尘车间发生了一起严重的粉尘爆炸事故,这一悲剧造成了8人死亡和8人受伤。这起事故引起了社会各界的广泛关注,也再次凸显了工业安全管理的重要性。 据报道,这起粉尘爆炸事故发生在公司的粉尘车…

ModuleNotFoundError: No module named ‘serial.tools‘

解决以上报错的方法: 1、大家在使用以下代码时: port_list list(serial.tools.list_ports.comports()) 会出现报错: ModuleNotFoundError: No module named serial.tools; serial is not a package 这个时候我们应该先安装serial 然…

Spring Boot整合zxing实现二维码登录

zxing是google的一个二维码生成库,使用时需配置依赖: implementation("com.google.zxing:core:3.4.1") implementation("com.google.zxing:javase:3.4.1") zxing的基本使用 我们可以通过MultiFormatWriter().encode()方法获取一个…

PMP考试:如何高效学习PMBOK?

PMBOK(项目管理知识体系指南)是PMP考试的核心教材,学习PMBOK对于备考PMP考试至关重要。那么我将分享一些高效学习PMBOK的方法和技巧,帮助同学们更好地掌握项目管理知识。 一、制定学习计划 在学习PMBOK之前,制定一个详…

嵌入式系统中端口号的理解与分析

每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人. 在此过程中, 还会谈谈间接层, naming service 等概念, IoC, 依赖倒置等原则以及 TCP 协议…

【linux】02 :Linux基础命令

1.掌握linux系统的目录结构 linux只有一个顶级目录,称之为:根目录。 windows系统有多个顶级目录,即各个盘符。 2.linux路径的描述方式 /在Linux中的表示:出现在开头表示根目录,出现在后面表示层级关系。 3.什么是命…

项目管理工具及模板(甘特图、OKR周报、任务管理、头脑风暴等)

项目管理常用模板大全: 1. 项目组OKR周报 2. 项目组传统周报工作法 3. 项目甘特图 4. 团队名单 5. 招聘跟进表 6. 出勤统计 7. 年度工作日历 8. 项目工作年计划 9. 版本排期 10. 项目组任务管理 11. 项目规划模板 12. 产品分析报告 13. 头脑风暴 信息化项目建设全套…

vuetify3+vite,打包后mdi图标无法正常显示,及打包后首页白屏

1、图标无法正常显示 【因为我的vite.config.ts配置中使用了vite-plugin-css-injected-by-js这个插件】 为了优化我的项目,我使用了很多插件,vite-plugin-css-injected-by-js就是其中一个,项目本地运行是正常的,但是当我使用unia…

【梳理】k8s使用Operator搭建Flink集群(高可用可选)

文章目录 1. 架构图2. helm 安装operator3. 集群知识k8s上的两种模式:Native和Standalone两种CR 4. 运行集群实例Demo1:Application 集群Demo2:Session集群优劣 5. 高可用部署问题1:High availability should be enabled when sta…

【LeetCode】升级打怪之路 Day 18:二叉树题型 —— 树的深度、高度、路经

今日题目: 104. 二叉树的最大深度111. 二叉树的最小深度110. 平衡二叉树257. 二叉树的所有路径112. 路径总和 目录 Problem 1:树的深度LC 104. 二叉树的最大深度 【easy】LC 111. 二叉树的最小深度 【易错】 Problem 2:树的高度LC 110. 平衡二…

【阿里云系列】-如何实现两个VPC网络资源互通

背景 由于实际项目预算有限,两套环境虽然分别属于不同的专有网络即不同的VPC,但是希望借助一台运维机器实现对两个环境的监控和日常的运维操作 网络架构 如下是需要实现的外网架构图,其中希望实现UAT环境的一台windows的堡垒机可以访问生产…

如何考上东南大学计算机学院?

东南大学招生学院是计算机科学与工程学院、苏州联合研究生院,复试公平,不歧视双非考生,985院校中性价比较高,但近年热度在逐年上涨,需要警惕。 建议报考计算机科学与工程学院081200计算机科学与技术专业目标分数为380…

HarmonyOS开发:NEXT版本开发新体验

前言 年前,公司团队接洽了鸿蒙方团队,确认了生态合作,于是开通了白名单权限,授权了新的IDE和相关文档的使用和查看,历经一月有余,谈谈NEXT版本有哪些开发上的区别。 本文会从以下几个方面阐述:…

Unity2021.3.35f1配置安卓APK发布环境

1.在Unity3d中点击菜单【Edit】【Preferences】,在External Tools中可以看到Android平台需要配置JDK、SDK、NDK、Gradle。对应的版本需要在官方文档中查看 JDK:指Java开发环境 SDK:指安卓开发包,包括Build Tools、Commond-line T…

day1-C++

1>提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成。 代码&#xff1a; #include <iostream> #include <string.h> using namespace std;int main() {string str ;int low 0, …

react 综合题

一、组件基础 1. React 事件机制 javascript 复制代码<div onClick{this.handleClick.bind(this)}>点我</div> React并不是将click事件绑定到了div的真实DOM上&#xff0c;而是在document处监听了所有的事件&#xff0c;当事件发生并且冒泡到document处的时候&a…