搞懂 RESTful API
https://apifox.com/blog/a-cup-of-tea-time-to-understand-restful-api/
什么是 RESTful API
- 在互联网并没有完全流行的初期,移动端也没有那么盛行,页面请求和并发量也不高,那时候人们对接口(API)的要求没那么高。
- 当初的 web 应用程序主要是在服务器端实现的,因此需要使用复杂的协议来操作和传输数据。然而,随着移动端设备的普及,需要在移动端也能够访问 web 应用程序,而客户端和服务端就需要接口进行通信,但接口的规范性就又成了一个问题。

- 所以一套简化开发、结构清晰、符合标准、易于理解、易于扩展让大部分人都能够理解接受的接口风格就显得越来越重要,而 RESTful 风格的接口 (RESTful API) 刚好有以上特点,就逐渐应运而生。
REST
- REST,全名 Representational State Transfer (表现层状态转移),他是一种设计风格,一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。
RESTful
- RESTful 只是转为形容詞,就像那么 RESTful API 就是满足 REST 风格的,以此规范设计的 API。
RESTful API
- 我们常见的 API 一般都长这样子:

- 而 RESTful 风格的 API 却长这样子:

六大原则
Uniform Interface(统一接口)
- 就像我们上面两幅图看到的 API,这是最直观的特征,是 REST 架构的核心,统一的接口对于 RESTful 服务非常重要。客户端只需要关注实现接口就可以,接口的可读性加强,使用人员方便调用。
- RESTful API 通过 URL 定位资源,并通过 HTTP 方法操作该资源,对资源的操作包括获取、创建、修改和删除,这些操作正好对应 HTTP 协议提供的 GET、POST、PUT 和 DELETE 方法。
GET:获取资源信息。
POST:创建一个新资源。
PUT:更新已有的资源。
DELETE:删除已有的资源。
- 在一个完全遵循 RESTful 的团队里,后端只需要告诉前端 /users 这个 API,前端就应该知道:
获取所有用户:GET /users
获取特定用户:GET /users/{id}
创建用户:POST /users
更新用户:PUT /users/{id}
删除用户:DELETE /users/{id}
- 当 API 数量非常多,系统非常复杂时,RESTful 的好处会越来越明显。理解系统时,可以直接围绕一系列资源来理解和记忆。
Client-Server(客户端和服务端分离)
- 它意味着客户端和服务器是独立的、可以分离的。
- 客户端是负责请求和处理数据的组件,服务器是负责存储数据和处理请求的组件。
- 这两个组件之间通过一组约定来协作,以便客户端能够获取所需的数据。
Statelessness(无状态)
- 它指的是每个请求都是独立的,没有前后关系。服务器不保存客户端的状态信息,并且每个请求都必须包含所有所需的信息。
- 这样做的好处是可以使每个请求变得简单,容易理解和处理,并且可以更容易地扩展和维护。
- 例如,假设你在登录一个网站,你需要在登录界面输入用户名和密码通过接口获取到了 token 。接下来的所有请求都需要携带上这个 token 而不是系统在第一次登录成功之后记录了你的状态。
搞懂 RESTful API的更多相关文章
- 一文搞懂RESTful API
RESTful接口实战 原创公众号:bigsai 转载请联系bigsai 文章收藏在回车课堂 前言 在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用 ...
- [Python] Uvicorn+FastAPI快速搞定Restful API开发
目录 安装模块 运行代码 运行命令 快速文档 安装模块 # 一个现代的,快速(高性能)python web框架 pip install fastapi # 主要用于加载和提供应用程序的服务器. pip ...
- 一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill
开始 一文搞懂 Promise 新 Api allSettled 的用法和 all 区别,以及如何在不支持新特性的环境下实现一个 Polyfill allSettled 的用法 const runAl ...
- RESTful API URI 设计: 查询(Query)和标识(Identify)
相关文章:RESTful API URI 设计的一些总结. 问题场景:删除一个资源(Resources),URI 该如何设计? 应用示例:删除名称为 iPhone 6 的产品. 是不是感觉很简单呢?根 ...
- 利用 Django REST framework 编写 RESTful API
利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framewor ...
- Restful API设计规范
理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...
- rest-framework 序列化格式Restful API设计规范
理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...
- 搞懂分布式技术28:微服务(Microservice)那点事
搞懂分布式技术28:微服务(Microservice)那点事 微服务(Microservice)那点事 肥侠 2016-01-13 09:46:53 浏览58371 评论15 分布式系统与计算 微服务 ...
- 避免自己写的 url 被diss!建议看看这篇RestFul API简明教程!
大家好我是 Guide 哥!这是我的第 210 篇优质原创!这篇文章主要分享了后端程序员必备的 RestFul API 相关的知识. RestFul API 是每个程序员都应该了解并掌握的基本知识,我 ...
- 搞懂ELK并不是一件特别难的事(ELK)
本篇文章主要介绍elk的一些框架组成,原理和实践,采用的ELK本版为7.7.0版本 一.ELK介绍 1.1.ELK简介 ELK是Elasticsearch.Logstash.Kibana三大开源框架首 ...
随机推荐
- linux中利用crontab设置定时任务
linux中利用crontab设置定时任务: # 每隔1个小时运行一次命令,四个*分别代表分,时,日,月,周 # crontab -l查看:crontab -e编辑 */1 * * * * /root ...
- Kubernetes亲和性学习笔记
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是欣宸在学习Kubernetes调度器的 ...
- Avalonia项目打包安装包
Avalonia项目打包安装包 要将 Avalonia 项目打包成安装包,你可以使用 Avalonia 发布工具来完成 1.创建一个发布配置文件 在你的 Avalonia 项目中,创建一个发布配置文件 ...
- C# LinearGradientBrush使用报错
今天在学习C#时使用 LinearGradientBrush 属性发生了如上错误,发现引用其时并没有提示 在添加了此命名空间后恢复正常
- 【必看!】阿里云推出QWen-7B和QWen-7b-Chat,开放免费商用!
阿里云于8月3日宣布开源两款重要的大型模型--QWen-7B和QWen-7b-Chat.这两款模型的参数规模达到了令人瞩目的70亿,并且已经在Hugging Face和ModelScope平台上开放, ...
- pc 移动端 双端切换
实现一个项目匹配多个端,使用vue.config自带的page 实现多个页面切换.官网介绍:https://cli.vuejs.org/zh/config/#pages 在创建的vue项目中找到 vu ...
- React Router 6 快速上手
1.概述 React Router 以三个不同的包发布到 npm 上,它们分别为: react-router: 路由的核心库,提供了很多的:组件.钩子. react-router-dom: 包含rea ...
- API接口获取的商品详情该如何使用
获取到商品API接口返回的商品详情数据后,我们可以将其用于以下方面: 商品展示:通过获取到的商品详情数据,我们可以展示商品信息,包括商品名称.价格.商品图片.描述等信息.我们可以将这些信息显示在商品详 ...
- 给你的 SpringBoot 工程部署的 jar 包瘦瘦身吧!
之前有写过一篇有关maven插件的文章:spring-boot-maven-plugin插件详解 一.需求背景 我们知道Spring Boot项目,是可以通过java -jar 包名 启动的. 那为什 ...
- QA|如何实现一个函数读取1-9按钮?|网页计算器自动化测试实战
如何实现一个函数读取1-9按钮? 如何实现一个根据我们Json存的数字,自动选取对应按钮点击,并且点击对应算法? 首先我们肯定不能给每个元素都写一个函数吧,毕竟挺多,而且如果这样写了,那加减乘除都要分 ...