《JavaScript应用程序设计》一一1.13 RESTful JSON Web Services

简介:

本节书摘来华章计算机出版社《JavaScript应用程序设计》一书中的第1章,第1.13节,作者:Eric Elliott 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.13 RESTful JSON Web Services

表述性状态传递(Representational State Transfer,REST)是客户端与服务端的通信架构,REST架构采用关注点分离原则在数据资源与数据消费者之间建立了多层结构。在这种架构体系下,服务端仅关注数据资源的管理,而无需操心界面实现,客户端则可以以任何形式或语言去做界面实现。REST架构并不关心界面是被谁或是被怎样实现的,它仅处理并维护客户端与服务端的应用程序状态。
RESTful应用使用HTTP方法(POST、GET、PUT 和 DELETE)来告诉服务器,客户端当前对资源的操作行为,这些行为包括:
· 在资源集合创建条目: HTTP POST。
· 获取资源状态: HTTP GET。
· 更新(替换)资源: HTTP PUT。
· 删除资源或资源集合: HTTP DELETE。
如果你熟悉数据库的CRUD(创建、检索、更新和删除)操作,你会觉得上述行为与CRUD很相似,你可以将它们对号入座,不过要记住,在REST中,更新资源意味着将资源替换。
图1-2是一个较为典型的状态传递时序图。
image

图1-2:REST时序图

  1. 客户端通过HTTP GET请求服务端上的统一资源指示符(URI)来获取数据。在服务端上每个资源对应唯一的URI。
  2. 服务端从数据库或缓存中检索数据,随后将之封装成客户端所需的数据结构返回。
  3. 数据以文档的形式被返回,一般包含了经过JSON编码后的对象,尽管REST并没有严格指定数据交换格式。现今仍旧有不少基于XML的RESTful应用,随着JSON慢慢成为一项标准,越来越多的RESTful应用同时支持JSON与XML两种数据交换
    格式。
  4. 客户端接收并处理数据。
  5. 客户端通过HTTP PUT请求服务端同一URI上报处理过的数据。
  6. 用经PUT请求上报的数据替换服务端原有的数据。
    使用PUT还是POST做资源更新常常是一个让人感到困惑的问题,REST制定了资源访问的规则。除非客户端本身可以提供较为安全的唯一ID标识符,否则在资源集合新建资源的操作一律采用POST方式处理。在这种情形下,服务端生成ID标识符并返回给客户端。

例如, 你可以通过POST方法访问服务端的/users/资源路径从而创建一个新用户,此时服务端会给新用户生成一个唯一ID标识符,随后你便可以通过/users/userid/资源路径获取该资源。在服务端每一个唯一的URI路径对应一个新的用户,POST方法不能用于更新或修改现有的资源集,仅能够做资源添加。
而使用PUT方法访问服务端的/user/userid资源路径,则可以更新用户的信息,注意,这项操作将完全将原有的资源替换,所以请确保所更新资源内容的信息完整性。
在第8章中我们会详细介绍REST架构。

相关文章
|
5月前
|
JavaScript 前端开发
如何减少Node.js应用中的全局变量?
如何减少Node.js应用中的全局变量?
335 133
|
5月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
298 69
|
2月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
77 0
|
9天前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
68 3
|
2月前
|
资源调度 负载均衡 JavaScript
使用PM2工具部署Vue.js应用于服务器
以上步骤完成之后,你就成功利⽤ PM⼆工具将 Vuejs 应⽰程序部署至服 务 器,并且配合反向代理实现了高效稳定访问及负载均衡功能。
96 0
|
6月前
|
前端开发 搜索推荐 JavaScript
如何通过DIY.JS快速构建出一个DIY手机壳、T恤的应用?
DIY.JS 是一款基于原生 Canvas 的业务级图形库,专注于商品定制的图形交互功能,帮助开发者轻松实现个性化设计。适用于 T 恤、手机壳等多种商品场景。它自带丰富功能,无需从零构建,快速集成到项目中。通过创建舞台、添加模型、定义 DIY 区域和添加素材四个步骤即可完成基础用法。支持在线演示体验,文档详细,易上手。
210 57
|
5月前
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
132 3
|
6月前
|
存储 JavaScript 前端开发
|
7月前
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
7月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章