千家信息网

REST API设计风格都有哪些

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,REST API设计风格都有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如果你研究了应用程序中当前定义的所有路由,
千家信息网最后更新 2025年02月16日REST API设计风格都有哪些

REST API设计风格都有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

  如果你研究了应用程序中当前定义的所有路由,会注意到其中的几个符合我上面使用的API的定义。找到它们了吗?我说的是返回JSON的几条路由,比如第十四章中定义的/translate路由。这种路由的内容都以JSON格式编码,并在请求时使用POST方法。此请求的响应也是JSON格式,服务器仅返回所请求的信息,客户端负责将此信息呈现给用户。

  虽然应用程序中的JSON路由具有API的"感觉",但它们的设计初衷是为支持在浏览器中运行的Web应用程序。设想一下,如果智能手机APP想要使用这些路由,它将无法使用,因为这需要用户登录,而登录只能通过HTML表单进行。在本章中,我将展示如何构建不依赖于Web浏览器的API,并且不会假设连接到它们的客户端的类型。

分层系统

  分层系统原则是说当客户端需要与服务器通信时,它可能最终连接到代理服务器而不是实际的服务器。因此,对于客户端来说,如果不直接连接到服务器,它发送请求的方式应该没有什么区别,事实上,它甚至可能不知道它是否连接到目标服务器。同样,这个原则规定服务器兼容直接接收来自代理服务器的请求,所以它绝不能假设连接的另一端一定是客户端。

  这是REST的一个重要特性,因为能够添加中间节点的这个特性,允许应用程序架构师使用负载均衡器,缓存,代理服务器等来设计满足大量请求的大型复杂网络。

按需获取客户端代码(CodeOnDemand)

  这是一项可选要求,规定服务器可以提供可执行代码以响应客户端,这样一来,就可以从服务器上获取客户端的新功能。因为这个原则需要服务器和客户端之间就客户端能够运行的可执行代码类型达成一致,所以这在API中很少使用。你可能会认为服务器可能会返回JavaScript代码以供Web浏览器客户端执行,但REST并非专门针对Web浏览器客户端而设计。例如,如果客户端是iOS或Android设备,执行JavaScript可能会带来一些复杂情况。

统一接口

  最后,最重要的,最有争议的,最含糊不清的REST原则是统一接口。Dr.Fielding列举了REST统一接口的四个特性:唯一资源标识符,资源表示,自描述性消息和超媒体。

  唯一资源标识符是通过为每个资源分配唯一的URL来实现的。例如,与给定用户关联的URL可以是/api/users/,其中是在数据库表主键中分配给用户的标识符。大多数API都能很好地实现这一点。

  资源表示的使用意味着当服务器和客户端交换关于资源的信息时,他们必须使用商定的格式。对于大多数现代API,JSON格式用于构建资源表示。API可以选择支持多种资源表示格式,并且在这种情况下,HTTP协议中的内容协商选项是客户端和服务器确认格式的机制。

  自描述性消息意味着在客户端和服务器之间交换的请求和响应必须包含对方需要的所有信息。作为一个典型的例子,HTTP请求方法用于指示客户端希望服务器执行的操作。GET请求表示客户想要检索资源信息,POST请求表示客户想要创建新资源,PUT或PATCH请求定义对现有资源的修改,DELETE表示删除资源的请求。目标资源被指定为请求的URL,并在HTTP头,URL的查询字符串部分或请求主体中提供附加信息。

  超媒体需求是最具争议性的,而且很少有API实现,而那些实现它的API很少以满足REST纯粹主义者的方式进行。由于应用程序中的资源都是相互关联的,因此此要求会要求将这些关系包含在资源表示中,以便客户端可以通过遍历关系来发现新资源,这几乎与你在Web应用程序中通过点击从一个页面到另一个页面的链接来发现新页面的方式相同。理想情况下,客户端可以输入一个API,而不需要任何有关其中的资源的信息,就可以简单地通过超媒体链接来了解它们。但是,与HTML和XML不同,通常用于API中资源表示的JSON格式没有定义包含链接的标准方式,因此你不得不使用自定义结构,或者类似JSON-API,HAL,JSON-LD这样的试图解决这种差距的JSON扩展之一。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

客户 资源 客户端 服务器 服务 格式 信息 应用程序 程序 路由 应用 设计 代码 原则 方式 浏览器 用户 浏览 内容 媒体 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 自动化软件开发技术工程师 没有发现所选服务器 数据库算百分比 硬盘储存服务器报警 怎么打开软件存在电脑的数据库 河北麻将软件开发服务介绍 为预防网络安全提两条建议 戴尔服务器产品规格说明书 网络安全通用模型图片 塔科夫俄版能玩哪些服务器 steam腐蚀pve服务器 软件开发公司销售部的职能 小程序的网络安全 各大企业的数据库 金融行情数据软件开发 邦计互联网科技上海有限公司 山西水性软件开发发展现状 产生网络安全隐患的原因 数据库打开文件被改怎么办 关于网络安全活动项目书 民航网络安全预测 有哪些是联网的软件开发 软件开发和管理专业就业 打擂台下载软件开发 starbase数据库说明什么 关于网络安全的活动名称 hp服务器raid卡图片 寒假网络安全教育课件 虹口区网络技术服务咨询口碑推荐 查询数据库有时正常有时报错
0