《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架构。

相关文章
|
1月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
181 77
|
1月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
122 62
|
1月前
|
存储 JSON 安全
如何使用 JSON Web Tokens 进行身份验证?
总的来说,JWT 是一种强大而灵活的身份验证方式,通过正确使用和管理,可以为应用提供可靠的身份验证机制,同时提高系统的可扩展性和安全性。在实际应用中,需要根据具体的需求和场景,合理设计和实施 JWT 身份验证方案。
114 63
|
28天前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
67 31
|
28天前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。
|
28天前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
41 3
|
28天前
|
JavaScript
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
|
1月前
|
JavaScript 前端开发 安全
JavaScript与TypeScript的对比,分析了两者的特性及在实际项目中的应用选择
本文深入探讨了JavaScript与TypeScript的对比,分析了两者的特性及在实际项目中的应用选择。JavaScript以其灵活性和广泛的生态支持著称,而TypeScript通过引入静态类型系统,提高了代码的可靠性和可维护性,特别适合大型项目。文章还讨论了结合使用两种语言的优势,以及如何根据项目需求和技术背景做出最佳选择。
56 4
|
1月前
|
机器学习/深度学习 人工智能 JavaScript
JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景
本文探讨了JavaScript和TypeScript的未来发展趋势及其在Web开发中的应用前景。JavaScript将注重性能优化、跨平台开发、AI融合及WebAssembly整合;TypeScript则强调与框架整合、强类型检查、前端工程化及WebAssembly的深度结合。两者结合发展,特别是在Vue 3.0中完全采用TypeScript编写,预示着未来的Web开发将更加高效、可靠。
42 4
|
1月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
47 5