什么是RESTful API

什么是RESTful API

RESTful API是利用HTTP请求访问或使用数据的应用程序接口(API)的体系结构样式。这些数据可用于GET,PUT,POST和DELETE数据类型,这些数据类型指的是与资源相关的操作读取、更新、创建和删除。

网站的API是允许两个软件程序相互通信的代码。API详细说明了开发人员编写从操作系统或其他应用程序请求服务程序的正确方法。

RESTful API(也称为RESTful Web服务或REST API)基于表示性状态转移(REST),它是Web服务开发中经常使用的一种体系结构样式和通信方式。

REST技术通常优于其他类似技术。这是因为REST使用较少的带宽,使其更适合高效的互联网使用。RESTful API也可以用JavaScript或Python之类的编程语言来构建。

浏览器使用的REST可以被视为互联网语言。随着云使用量的兴起,云消费者正在使用API公开和组织对Web服务的访问。REST是构建API的逻辑选择,它允许用户在分布式环境中灵活地连接、管理和交互云服务。

RESTful API如何工作

RESTful API使用分解事务来创建一系列小模块。每个模块处理事务的一个底层部分。这种模块化为开发人员提供了很大的灵活性,但是对于开发人员来说,从头开始设计REST API是一个挑战。
目前,有几家公司提供了供开发人员使用的工具,例如本文演示工具EOLINKER:www.eolinker.com。
RESTful API使用命令来获取资源。资源在任何给定时间戳下的状态称为表示资源(resource representation)。RESTful API使用RFC 2616协议定义的现有HTTP方法,例如:

GET检索资源;
PUT更改状态或更新资源的状态,该资源可以是对象,文件或块;
POST创建该资源;
DELETE删除资源。
使用REST,网络化组件是用户请求访问的资源,所有调用都是无状态的;RESTful服务在执行之间不能保留任何内容。

REST API支持的数据格式包括:
application/ json
application/ xml
application/ x-www-form-urlencoded
multipart/form-data

用途

由于调用是无状态的,因此REST在云应用程序中很有用。如果出现故障,无状态组件可以自由地重新部署,它们可以扩展适应负载变化。因为任何请求都可以定向到组件的任何实例,下一个事务不必记住任何保存的内容。这使得REST更适合用于Web。RESTful模型在云服务中也很有用,因为通过API绑定到服务是控制URL解码方式的问题。

RESTful API设计和架构约束

RESTful API设计由Roy Fielding在2000年的博士学位论文中定义。为了成为真正的RESTful API,Web服务必须遵守以下六个REST体系结构约束:

使用统一接口(UI)。资源应该通过单个URL进行唯一标识,并且只有通过使用网络协议的底层方法(例如带HTTP的DELETE,PUT和GET),才能对资源进行操作。

基于客户端服务器。客户端和服务器之间应该要清晰划分。UI和请求收集问题是客户端的领域。数据访问、工作负载管理和安全性是服务器的领域。客户端和服务器的这种松散耦合使得彼此之间可以独立开发。

无状态操作。所有客户端-服务器操作都应该是无状态的,并且所需的任何状态管理都应该在客户端进行而不是服务器上。

RESTful资源缓存。除非明确指出不可能进行缓存,否则所有资源都应允许缓存。

分层系统。REST支持由多层服务器组成的体系结构。

按需编码。大多数时候,服务器会以XML或JSON的形式发送回资源的静态表示。但是,必要时服务器可以向客户端发送可执行代码。

常见的REST API挑战

除了设计和体系结构的约束外,个人还必须面对REST API的一些挑战。可能具有挑战性的一些概念可能包括:

端点一致性。

API版本控制。

响应时间长,数据太多。

安全性。需要注意很多方面,包括使用以下方面:
HTTPS;
阻止来自未知IP地址和域的访问;
验证URL;
阻止意外的大有效载荷;
记录请求;
检查故障。

身份验证。使用常见的身份验证方法,例如HTTP基本身份验证(允许使用base64编码的用户名:密码字符串),API密钥,JSON Web Token和其他访问令牌。例如,OAuth 2.0适用于访问控制。

API测试。测试过程中可能具有挑战性的部分包括:
初始设置
架构更新
测试参数组合
序列API调用
验证测试参数
系统集成

定义错误代码和消息。
对于错误代码,使用标准HTTP错误代码是更常见的做法。错误处理除了解析正文或检查错误外,可能没有其他方法来区分响应是否成功。

随着时间推移的,开发人员开始使用RESTful API,并使用它们为网站和应用程序添加功能。如今,REST API被认为是“互联网的骨干”。

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

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

相关文章

Vue移动端项目--瑞幸咖啡重构优化

来了客官,好久不见! 从年初开始,就有个想法,想着把之前做过的项目重新整理一下。毕竟今时不同往日,从现在的角度去看曾经做过的项目,倒是觉得有很多稚嫩的地方。毕竟无论做什么都是熟能生巧,由浅…

字符串 (2)--- 前缀函数与 KMP 算法

/* https://www.luogu.com.cn/problem/UVA455 最小周期&#xff1a; n - pi[n -1] */ #include <iostream> #include <string> #include <vector> using namespace std; vector<int> prefix_fun(string s) { int len s.length(); /…

基于java在线点餐系统设计与实现

基于java在线点餐系统设计与实现 随着科学技术与经济的快速发展&#xff0c;网络信息技术也有了显著的提升与进步&#xff0c;当今的社会是一个集数字化&#xff0c;网络化&#xff0c;信息化的&#xff0c;并且是以网络为核心的现代化社会。伴随信息互联网的高速成长&#xf…

深度学习——批标准化Batch Normalization

什么是批标准化&#xff1f; 批标准化&#xff08;Batch Normalization&#xff09;是深度学习中常用的一种技术&#xff0c;旨在加速神经网络的训练过程并提高模型的收敛速度。 批标准化通过在神经网络的每一层中对输入数据进行标准化来实现。具体而言&#xff0c;对于每个输…

Linux基本指令操作

登陆指令&#xff08;云服务器版&#xff09; 当我们获取公网IP地址后&#xff0c;我们就可以打开xshell。 此时会有这样的界面&#xff0c;我们若是想的登陆&#xff0c;则需要输入以下的指令 ssh 用户名公网IP地址 然后会跳出以下的窗口 接着输入密码——密码便是先前定好…

微服务安全简介

​由于其可扩展性、灵活性和敏捷性&#xff0c;微服务架构已经变得越来越受欢迎。然而&#xff0c;随着这种架构的分布和复杂性增加&#xff0c;确保强大的安全措施变得至关重要。微服务的安全性超越了传统的方法&#xff0c;需要采用全面的策略来保护免受不断演变的威胁和漏洞…

CentOS 7 x86_64 制作openssh 9.3p2 rpm包修复安全漏洞 —— 筑梦之路

最近openssh 暴露出一个安全漏洞CVE-2023-38408&#xff0c;以下是相关资讯&#xff1a; 2023年7月19日&#xff0c;OpenSSH发布紧急安全补丁&#xff0c;以解决OpenSSH ssh-agent转发中存在安全漏洞远程执行CVE-2023-38408。漏洞由Qualys威胁研究单位(TRU)发现。 OpenSSH 是Se…

Promise 讲解,js知识,es6

文章目录 一、Promise的三种状态1. 初始态pending2. 成功态fulfilled&#xff0c;调用resolve方法3. 失败态rejected&#xff0c;调用reject方法 二、Promise的方法then方法catch方法 三、async和awaitasync 函数await 表达式 四、代码举例帮助理解1、Promise的值通过then方法获…

网络设备身份鉴别使用TACACS+和RADIUS

TACACS&#xff08;Terminal Access Controller Access Control System Plus&#xff09;和RADIUS&#xff08;Remote Authentication Dial-In User Service&#xff09;是两种常用的网络认证协议&#xff0c;用于管理网络设备的用户身份验证和访问控制。 TACACS是一种基于TCP/…

在vsCode 中执行Electron 项目时,出现中文乱码问题

问题&#xff1a;vscode 中执行Electron 项目时&#xff0c;控制台出现乱码 解决方法&#xff1a; 在 terminal 修改编码格式&#xff1a;65001代表UTF-8&#xff0c;936代表GBK

IC设计从业者必备的宝藏网站!

对于IC设计从业者而言&#xff0c;获取准确的学习资源&#xff0c;行业资讯直观重要&#xff0c;今日我们推荐ic行业专业的宝藏网站&#xff0c;希望对从业者有所帮助。 01-找开源项目的网站 GitHub除了Git代码仓库托管及基本的 Web管理界面以外&#xff0c;还提供了订阅、讨论…

关于SVC和PendSV

这两个都属于异常而不是中断&#xff0c;所谓异常就是ARM内核中断这两个中断都是由用户代码主动触发的&#xff0c;即软件触发&#xff0c;没有其它触发源SVC&#xff1a;系统服务调用&#xff0c;进入该异常可以进入特权模式&#xff0c;即在需要进行各种系统操作的时候主动触…

用 Generative AI 构建企业专属的用户助手机器人

原文来源&#xff1a; https://tidb.net/blog/a9cdb8ec 关于作者&#xff1a;李粒&#xff0c;PingCAP PM TL;DR 本文介绍了如何用 Generative AI 构建一个使用企业专属知识库的用户助手机器人。除了使用业界常用的基于知识库的回答方法外&#xff0c;还尝试使用模型在 fe…

树形dp记录路径 CF1779F Xorcerer’s Stones

CF1779F Xorcerer’s Stones 树形dp记录路径 首先我们分析一下操作。 对于奇树&#xff0c;进行一次操作后&#xff0c;其异或和不变&#xff1b;对于偶树&#xff0c;进行一次操作后&#xff0c;其异或和为0。 如果我们能让所有点异或和为0&#xff0c;只要在根节点再进行一次…

JAVA面试总结-Redis篇章(三)——缓存雪崩

JAVA面试总结-Redis篇章&#xff08;三&#xff09;——缓存雪崩

go性能分析工具之trace

参考文章&#xff1a; https://eddycjy.gitbook.io/golang/di-9-ke-gong-ju/go-tool-trace https://mp.weixin.qq.com/s__bizMzUxMDQxMDMyNg&mid2247484297&idx1&sn7a01fa4f454189fc3ccdb32a6e0d6897&scene21#wechat_redirect 你有没有考虑过&#xff0c;你的g…

【计算机编程语言】HTML-前端基础知识

文章目录 HTML1.初识HTML1.1什么是HTML 2.网页基本标签2.1标题标签2.2段落标签2.3换行标签2.4水平线标签2.5字体样式标签2.6注释和特殊符号 3.图像、超链接、网页布局3.1图像3.2链接标签3.3网页布局 4、列表、表格、媒体元素4.1列表4.2表格4.3媒体元素 5.页面结构分析6.iframe内…

运维英语基础语法-一般现在时

一般现在时的陈述句-你、我、他&#xff1a; 公式&#xff1a;代词be动词名词 代词&#xff1a; 代词用来代替名词&#xff0c;以避免重复。常见的代词有I, you, he, she, it, we, they, me, him, her, us, them等。 Be动词 am&#xff08;用于第一人称单数&#x…

0基础学习VR全景平台篇 第70篇:VR直播-如何设置付费观看、试看

对于拥有优质内容的VR直播&#xff0c;可以通过付费观看的方式进行内容变现&#xff0c;是当下非常流行的商业模式。 付费价格&#xff1e;0时便会自动弹出“试看时间”的设置项。试看时间&#xff1d;0秒时&#xff0c;用户进入直播间需要先付费才可观看&#xff1b;试看时间&…

Python中字符串拼接有哪些方法

目录 什么是字符串拼接 为什么要进行字符串拼接 Python中字符串拼接有哪些方法&#xff1f; 什么是字符串拼接 字符串拼接是将多个字符串连接在一起形成一个新的字符串的操作。在编程中&#xff0c;字符串拼接经常用于将不同的字符串组合在一起&#xff0c;以创建更长或更有…