restful相关知识

news2024/11/17 23:56:46

一. 接口编程简介

1 背景

​ 随着互联网的发展, 尤其是移动互联为代表的Web3.0时代. 客户端层出不穷, 以APP、微信、PC浏览器为代表, 服务端业务逻辑是基本一致的.

​ 那么有没有一种方式可以做到”一次编写,随时接入”呢?

目前比较流行的方案就是"接口编程"

img

2 什么是接口编程

​ 一般来说接口编程是基于HTTP协议, 通过URL请求对应的服务器资源(Resource).

1) 什么是URL

在HTTP协议中, URL的组成如下

Schema://host[:port]/path[?query-string]
  • Schema: 使用的协议类型, 如http/https/ftp等
  • host: 主机域名或IP
  • port: 端口号(可选)
  • path: 路径
  • query-string: 查询参数(可选)

例子:

http://api.local.com/movies

https://api.local.com:8080/articles?id=100

2) 什么是资源

  • 狭义上讲, 所有在服务器保存的数据(如:音乐/视频/文章/个人信息…)都是服务器端资源.
  • 广义上讲, 任何服务器端的对象(如:应用程序/数据库记录/算法…)都可以看作资源.

3 接口编程的作用

主要是实现了前后端的分离

后端(服务器)为前端(APP端/PC浏览器端/微信端)提供一个简单并且统一的方式(URL), 返回前端需要的数据(Resource).这样不管是APP还是Web浏览器, 只需要通过HTTP协议都可以实现同样的操作.

二. RESTful设计六要素

是不是所有前后端分离的设计都叫RESTful呢? 不是!!!

ful是一个后缀, 意思是"像什么一样的" windful

RESTful是一种软件设计风格, 主要用于有客户端与服务端交互的软件. 主要包括6个方面

  • 资源路径(URL)
  • HTTP动词(Method)
  • 过滤信息(query-string)
  • 状态码(Status-code)
  • 错误信息(Error)
  • 返回结果(Result)

1 资源路径

标准的RESTful API中, 每个资源路径对应一个唯一的资源, 所以规定网址中不能有动词, 只能有名词, 并且一般来说为复数.

比如:

http://api.local.com/movies----表示电影资源

http://api.local.com/images----表示图片资源

http://api.local.com/musics----表示音乐资源

http://api.local.com/articles----表示文章资源

2 Http动词

对于资源, 一般有4个操作, CURD(增/删/改/查)

GET: 从服务器获取资源(一项或多项)

POST: 在服务器新建一个资源

PUT: 在服务器更新资源, 服务器返回完整的属性

DELETE: 从服务器删除资源

HEAD: 从服务器获取信息(响应头)

PATCH: 在服务器更新资源, 服务器只返回更新的属性


例子:

POST /articles – 创建文章内容

GET /articles/1 – 获取主键id为1的文章

3 过滤信息(请求数据)

当服务端需要返回的数据很多时, 服务器不可能全部返回

此时, 我们可以在客户端携带过滤信息, 比如: 分页信息


例子:

?page=1 – 第一页的信息

?offset=10&per_page=10 – 每页10条, 偏移10

4 响应状态码

服务端返回的信息, 用来告诉客户端操作结果

状态码含义说明
200OK操作成功, 并返回数据
201CREATED新建成功
204NO CONTENT删除成功
400BAD REQUEST请求语法错误
403Forbidden请求没有权限的资源
404NOT FOUND没有找到请求的资源

5 错误处理

如果状态码是4xx或者5xx, 需要告诉客户端对应的错误信息. 以Json格式返回

{

“error”: “错误信息”,

}

6 返回结果

针对不同的操作, 服务需要返回的结果应该符合这样的规范

GET /collections – 返回资源列表(数组)

GET /collections/:id – 返回单个资源 eg. /collections/1

POST /collections – 返回新生成的资源

PUT /collections/:id – 返回资源的完整属性

PATCH /collections/:id – 返回被修改的属性

DELETE /collections/:id – 返回204状态码+空文档

三. 工具

1 服务端工具

json-server

json-server一个快速成形的RESTful接口服务工具, 使用json-server可以快速的搭建一个RESTful服务端

第一步: 使用npm i json-server -g 全局安装

第二步: 新建一个data.json做为数据源

data.json如下

{
  "users": [
    {"id": 1, "name": "xiaoming", "age": 20},
    {"id": 2, "name": "xiaomei", "age": 18},
    {"id": 3, "name": "xiaopang", "age": 1}
  ]
}

第三步: 启动服务端

json-server -w data.json

会在localhost:3000端口启动一个RESTful服务

2 客户端

1) postman

这里给大家安利一个工具postman. 这个是在接口编程中使用非常多的一个工具

Postman是一个非常好用的免费API测试工具. 主要用于模拟发送Http请求.

官网地址: https://www.getpostman.com/

2) REST Client

image-20201215095739409

REST Client是一个非要好用的VSCode插件, 可以快速的测试RESTful接口

第一步: 安装REST Client

第二步: 编写test.http

GET http://localhost:3000/users HTTP/1.1

第三步: 点击Send Request

演示

image-20201215100517320

四. 前后端分离与接口文档

1 什么是前后端分离

所谓前后端分离, 如下图所示:

img

由上图可知, 一个项目有两个服务器

前端服务器: 显示页面

后端服务器: 提供数据

通过API接口实现前后端的交互!

2 前后端分离的好处

  1. 提高开发效率: 前后端开发人员可是同时开发, 互不影响

  2. 提高复用性: 后端通过统一的API提供数据, 这样可以同时为web前端/app前端/微信端提供数据

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DevOps - (3)使用SOPS 和Terraform来加密/解密敏感信息文件

一:背景 每个人都想将自己的敏感数据以加密格式存储在一个安全的地方。例如我们的数据库的账号密码,不能以纯文本的方式来记录。让我们利用Mozilla SOPS以一种安全的方式实现它。SOPS支持将文件加密为二进制文件,除此之外,它还具…

尘埃粒子计数器 审计追踪 权限管理 洁净室等级确认干货分享

尘埃粒子计数器实用干货汇总 随着我国医药行业的不断发展,越来越多的医药企业需要应用洁净技术以达到控制实验室安全卫生的目的。在医药、电子、机械微生物等行业中,需要严格把关空间的洁净度以符合相关的标准和产品的质量。其中包括对各种洁净等级的工作…

Qt 助手简介

在探讨Qt帮助框架之前,我们先了解一下Qt帮助文档,可以让大家更好的理解。 当你使用Qt时,你可能会发现Qt帮助文档是一个非常有用的资源。Qt帮助文档提供了关于Qt框架和其各种组件的详细信息,包括类和函数的文档、示例代码和教程等…

抖音seo系统源码*SaaS+部署搭建(开源)

抖音seo源码,抖音seo系统源码,抖音seo系统搭建,部署 抖音作为一个全球性的短视频平台,用户数量已经超过了10亿。这也给企业带来了巨大的发展机遇。为了吸引更多的用户,企业可以通过抖音seo源码来提高自己的搜索引擎排…

有没有什么好的C++项目推荐?

据我粗略估计,问我“有没有什么好的C项目推荐“这个问题出现的频率仅次于“问我帅不帅“。 「C」是一门贴近底层的语言,不像「Java」那样能够快速搭建一个业务系统,比如「XX」秒杀系统、「XX」电商系统这种看着“高大上“的项目,「…

python按行写入json文件,每一行都是一个标准json对象,但是整体文件却非json对象

今天这篇文章主要是一个小小的偏向于应用的实践,为啥会写这个,还要回溯到2017年,那时候做项目的时候有一个是要做数据处理分析的工作,给到我的数据集我拿到的时候总觉得怪怪的,每一行都是一个字典对象,但是…

聊聊部署在K8S的项目如何获取客户端真实IP

前言 最近部门有个需求,需要对一些客户端IP做白名单,在白名单范围内,才能做一些业务操作。按我们的部门的一贯做法,我们会封装一个client包,提供给业务方使用。(注: 我们的项目是运行在K8S上&a…

LAMP的实战应用之部署wordpress论坛,并实现正常访问登录论坛

目录 环境配置: 一、安装配置基础环境 步骤一:配置本地yun 步骤二:安装Remi 仓库配置包(清华源获取) 步骤三:配置Remi 仓库配置包 步骤四:安装php的加速器配置 步骤五:启动服…

Cesium实战 - 实现大气云层效果

Cesium实战 - 实现大气云层效果 Cesium 实现大气云层效果主要思路核心代码在线示例 Cesium 实现大气云层效果 在实际开发中,一般会有天气的效果,雨雪雾比较常见,相关的博客也很多,但是关于云层的天气效果还是比较少,而…

【调峰】储能辅助电力系统调峰的容量需求研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

经典神经网络(6)ResNet及其在Fashion-MNIST数据集上的应用

经典神经网络(6)ResNet及其在Fashion-MNIST数据集上的应用 1 ResNet的简述 ResNet 提出了一种残差学习框架来解决网络退化问题,从而训练更深的网络。这种框架可以结合已有的各种网络结构,充分发挥二者的优势。 ResNet以三种方式挑战了传统的神经网络架…

【LeetCode】342. 4的幂

342. 4的幂(简单) 方法一:二进制 思路 首先考虑一个数字是不是 2 的整数次方:如果一个数字 n 是 2 的整数次方,那么它的二进制一定是 0...010...0 这样的形式,将它和 -n 按位与的结果一定是它本身。如果 …

前沿质谱应用沙龙分享会暨苏州百趣落成仪式即将开幕!

质谱作为一项医学检验新技术,凭借高特异性、高灵敏度、多指标检测等优势,成为了体外诊断领域最富生命力的新技术之一。目前质谱技术能够准确的测定多种生物小分子代谢物,且质谱在大分子物质例如蛋白质方面也应用的非常广泛。目前,…

要电脑重装系统装在哪个盘最好

在进行电脑重装系统时,选择一个合适的系统安装盘是非常重要的。本文将为您介绍如何选择最佳的系统安装盘,以确保系统性能和稳定性的最佳表现。 工具/原料: 系统版本:windows系统 品牌型号:华硕VivoBook14 软件版本…

张小龙发明了小程序,是否意味着失败?

今天微信小程序上线,从开发到上线仅仅用了四天时间,这是一个了不起的成就。 小程序诞生以来,一直存在着一种声音:它是张小龙“伟大的发明”,是微信“伟大的创新”。然而,张小龙在小程序发布会上宣布&#…

Spark SQL概述、数据帧与数据集

文章目录 一、准备工作1、准备数据文件2、启动Spark Shell 二、加载数据为Dataset1、读文件得数据集 三、给数据集添加元数据信息1、定义学生样例类2、导入隐式转换3、将数据集转换成学生数据集4、对学生数据集进行操作(1)显示数据集内容(2&a…

认识熟悉 Stable Diffusion(SD)基本参数

界面样式 界面参数 界面参数说明prompt希望生成的图片的描述negative prompt不希望在图片中出现的描述Batch size每次生成的图片个数Width图片宽度Height图片高度 这里需要注意的就是尺寸,尺寸并非越大越好,需要根据自己的配置和需求适当调整&#xff…

node.js+vue学生读书笔记共享分享系统

从上面的描述中可以基本可以实现软件的功能: 1、开发实现读书笔记共享平台的整个系统程序; 2、管理员;首页、个人中心、用户管理、笔记分享管理、个人笔记管理、管理员管理、交流互动、系统管理等。 3、用户:首页、个人中心、笔记分享管理、个人笔记管理、我的收藏管理。 4、前…

Window10配置Maven详细教程

文章目录 一、Maven概述二、Maven下载三、配置Maven环境变量四、查看Maven是否配置成功五、为Maven配置本地仓库以及指定远程仓库5.1 Maven构件搜索顺序5.2 Maven配置本地仓库5.3 Maven指定远程仓库 一、Maven概述 Maven是专门管理和构建Java项目的工具,Maven的主要…

Linux nohup-后台挂起运行程序神器

一. 场景描述 天黑了,我得离开实验室去吃饭了。为了环保,我必须关闭电脑,减少不必要的浪费!正常情况下当我关闭终端或电脑时,上面运行的任务代码即会自动停止,但我依旧希望保持代码的正常运行,此…