本真的REST架构风格理解

本真的REST架构风格理解

REST(Representational State Transfer)是一种架构风格,它以统一资源标识符(URI)作为唯一的资源标识,通过HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作,使得客户端和服务器之间的交互方式简单明了、具有良好的可读性和可扩展性。但是,由于部分开发者对REST的不同理解,很多应用没有真正遵循REST的架构风格,只是实现了一些REST的特性,并且不同的开发者也对REST架构风格的定义有所差异。针对这种情况,本文主要从以下几个方面来讲解本真的REST架构风格的理解。

1. 完整的资源操作

本真的REST架构风格要求对资源的操作必须是完整的。完整的资源操作指的是使用HTTP方法对资源进行增加、查询、修改和删除时,必须使用对应的HTTP方法,不得使用其他HTTP方法来完成所需的操作。具体来说,一般使用以下HTTP方法:

  • GET: 用于获取资源
  • POST: 用于新增资源
  • PUT: 用于修改资源
  • DELETE: 用于删除资源

例如,在一个博客网站中,如果要新增一篇博客,应当向 /blogs 路径,使用POST方法发送一条HTTP请求。如果要获取一篇博客,应当向 /blogs/{blog-id} 路径,使用GET方法发送一条HTTP请求。如果要修改一篇博客的标题,应当向 /blogs/{blog-id} 路径,使用PUT方法发送一条HTTP请求。如果要删除一篇博客,应当向 /blogs/{blog-id} 路径,使用DELETE方法发送一条HTTP请求。

2. 基于HATEOAS原则

HATEOAS(Hypermedia as the Engine of Application State)是REST架构风格中的一个基本原则,也是本真的REST架构风格的重要标志。HATEOAS的原则是:使用超媒体驱动的应用程序状态引擎(hypermedia-driven application state engine)作为应用程序的架构,将超媒体(hypermedia)作为构建RESTful Web服务的主要手段之一。这样,客户端从服务端获得的只是资源的URI,而后续的交互流程需要客户端通过资源所包含的超媒体信息(比如链接)来完成。这种模式使得客户端和服务器之间的关系更加松耦合,可以增强应用程序的可伸缩性和可维护性。

例如,在博客网站中,当客户端使用GET方法获取到某篇博客的资源时,资源返回的JSON数据中应该包含相关的链接。比如,一个博客资源应该包含一个“编辑”链接,以便用户可以通过该链接访问博客编辑页面,并进行博客的修改。

{
  "id": "1",
  "title": "REST原理与实战",
  "body": "这是一篇关于REST的介绍性文章。",
  "links": [
    {
      "rel": "self",
      "href": "/blogs/1"
    },
    {
      "rel": "edit",
      "href": "/blogs/1/edit"
    }
  ]
}

同时,在博客编辑页面中,也应该包含保存和取消操作的链接。比如,一个博客编辑页面应该包含一个“保存”链接和一个“取消”链接,以便用户可以通过这两个链接来保存博客的修改或者取消博客的修改。

<!DOCTYPE html>
<html>
  <head>
    <title>编辑博客</title>
  </head>
  <body>
    <form method="POST" action="/blogs/1">
      <label>标题:</label>
      <input type="text" name="title" value="REST原理与实战" />
      <br />
      <label>内容:</label>
      <textarea name="body">这是一篇关于REST的介绍性文章。</textarea>
      <br />
      <a href="/blogs/1" rel="cancel">取消</a>
      <button type="submit">保存</button>
    </form>
  </body>
</html>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:本真的REST架构风格理解 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 人工智能打造充满创造力的新世界,华为云开发者日无锡站成功举办

    摘要:近日,华为云开发者日HDC.Cloud Day无锡站成功举行,开发者不仅聆听了华为云技术专家在生成式AI、元宇宙、AIoT、工业互联网等领域的前沿技术分享,还在KooLabs工作坊、展台等环节,亲身体验华为云产品的技术魅力。 3月21日,华为云开发者日HDC.Cloud Day无锡站成功举行,开发者不仅聆听了华为云技术专家在生成式AI、元宇宙、AIoT…

    云计算 2023年4月17日
    00
  • 阿里云大数据利器之-使用sql实现流计算做实时展现业务( flume故障转移版 )

    摘要: 实时业务处理的需求越来越多,也有各种处理方案,比如storm,spark等都可以。那以数据流的方向可以总结成数据源-数据搜集-缓存队列-实时处理计算-数据展现。本文就用阿里云产品简单实现了一个实时处理的方案。 实时业务处理的需求越来越多,也有各种处理方案,比如storm,spark等都可以。那以数据流的方向可以总结成数据源-数据搜集-缓存队列-实时处…

    云计算 2023年4月10日
    00
  • 【云计算】WAF简介、功能特性、部署方式等

    之前写了一篇《WAF防御能力评测及工具》,是站在安全运维人员选型WAF产品的角度来考虑的(优先从测试角度考虑是前职业病,毕竟当过3年游戏测试?!)。本篇文章从WAF产品研发的角度来YY如何实现一款可靠的WAF,灵感来自ModSecurity等,感谢开源。 本片文章包括三个主题 (1) WAF实现 WAF包括哪些组件,这些组件如何交互来实现WAF防御功能 (2…

    云计算 2023年4月11日
    00
  • 边缘计算+云计算,实现物联网的关键

      边缘计算+云计算,实现物联网的关键   云计算和边缘计算正在塑造物联网(IoT)的未来。这种组合为物联网网络中连接的设备带来了稳定性,并通过处理更接近源的数据来解决延迟问题。   云计算明显改变了数据处理的形式,特别是对于大数据。利用云的计算能力,物联网实现了跨越式发展,我们获得,存储和处理数据,而不必配置计算资源和管理。   物联网每年安装数十亿台智能…

    2023年4月10日
    00
  • ASP.NET CORE实现跨域

    下面是关于“ASP.NET CORE实现跨域”的完整攻略,包含两个示例说明。 简介 在ASP.NET Core应用程序中,可以使用CORS(跨域资源共享)来允许跨域请求。本文将详细讲解如何在ASP.NET Core应用程序中实现跨域。 步骤 以下是在ASP.NET Core应用程序中实现跨域的步骤: 在Startup.cs文件中添加CORS服务: 在Star…

    云计算 2023年5月16日
    00
  • 计算机科学家需要自己的云计算平台Chameleon

    美国国家科学基金会(NSF)资助的云测试平台Chameleon位于芝加哥大学和德克萨斯州高级计算中心,其开通运营不到一年的时间,但已在推动HPC容器领域的创新研究,百亿亿次的操作系统和网络安全等方面有了不俗的业绩。为了从研究的角度了解这个专用测试平台,行业媒体邀请芝加哥大学计算研究所首席研究员凯特·科赫和德克萨斯大学奥斯汀分校高级计算中心主任丹尼·斯坦兹欧文…

    云计算 2023年4月13日
    00
  • 简单且有用的Python数据分析和机器学习代码

    对于“简单且有用的Python数据分析和机器学习代码”,一般可以按照以下步骤来进行: 步骤一:导入数据 首先,我们需要导入需要分析的数据集,可以使用Pandas库进行导入和处理。具体的代码示例如下: import pandas as pd # 读取csv文件 data = pd.read_csv(‘data.csv’) # 查看前5行数据 print(dat…

    云计算 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部