前后端分离开发,RESTful 接口应该这样设计

本文深入探讨REST架构风格,解释了HTTP操作、响应码,并提供了相关开发库和框架。REST通过信息提升为一等公民,强调无状态、幂等性,通过URL操作资源。文中讨论了GET、POST、PUT、DELETE等HTTP动词的正确使用,并介绍了响应码的重要性,以及一些RESTful实现工具和资源。
摘要由CSDN通过智能技术生成

前言

REST(Representational State Transfer)架构风格是一种世界观,把信息提升为架构中的一等公民。通过 REST 可以实现系统的高性能、可伸缩、通用性、简单性、可修改性和可扩展等特性。这篇文章解释了主要的 HTTP 操作,对 HTTP 响应码进行描述,并列举相关开发库和框架。此外,本文还提供了额外的资源,对每个主题进行了更深入的探讨。

1. 简介

REST 架构风格不是一种可以购买的技术,也不是一个可以添加到软件开发项目中的开发库。首先也是最重要的,REST 是一种世界观,把将信息提升为构建架构中的一等公民。

Roy Fielding 的博士论文“架构风格和基于网络的软件架构设计”介绍和整理了“RESTful”系统的思想和相关术语。这是一篇学术论文,虽然使用正式语言,但是仍然易于理解并且提供了实践基础。

总结一下,RESTful 通过体系结构的特定选择能从部署的系统中获得理想特性。尽管这种风格定义的约束细节并没有为所有场合设计,但是的确可以广泛适用。

由于 Web 对消费者偏好有多重影响,REST 风格的倡导者鼓励企业组织在其边界内使用相同原则,就像他们在面向外部客户的网页上做的那样。本文将讨论现代 REST Web 实现中的基本约束和属性。

1.1 基础概念

REST 表示什么含义?以无状态方式传输、访问和操作文本数据。当正确部署后,REST 为互联网上不同应用程序之间提供了一致的互操作性。无状态(stateless)这个术语至关重要,它使得应用程序可以用不可知的方式进行通信。RESTful API 通过统一资源定位符地址(URL)公开服务。URL 名称将资源的区分为接受内容或返回内容。RFC 1738 中定义了 URL scheme,可以在这里找到: https://tools.ietf.org/rfc/rfc1738.txt

RESTful URL 类似于下面这个 library API:http://fakelibrary.org/library

实际公开的不一定是某种任意的服务,而是代表对消费者有价值的信息资源。URL 作为资源句柄,可以请求、更新或删除内容。

开始把服务发布到某个地方,然后开始与 REST 服务进行交互。返回的内容可能是 XML、JSON 格式,或者更确切地说是像 Atom 或自定义 MIME 类型等超媒体格式。虽然一般建议尽可能重用现有的格式,但是对正确设计的媒体类型正在变得越来越宽容。

需要请求资源的时候,客户机会发一个超文本传输协议(HTTP)GET 请求,例如在浏览器中键入一个 URL 然后点击回车,选择书签,或者点击锚引用链接。

通过编程方式与 RESTful API 交互,有数十个客户端 API 或工具可供选择。使用 curl 命令行工具,可以输入以下命令:

curl http://fakelibrary.org/library

上面的命令使用默认格式,但你可能不需要这种格式的信息。幸运的是 HTTP 有一种机制,可以指定返回信息的格式。在请求中指定 “Accept” 头,如果服务器支持这种格式,会以指定的格式返回。这个过程称为内容协商,这是 HTTP 中未被充分利用的功能之一,可以使用一个类似于上面例子中的 curl 命令来指定:

curl –H “Accept:application/json” http://fakelibrary.org/library

由于资源名称与内容格式是独立的,从而让请求不同格式信息成为可能。虽然 REST 中的 “R” 的含义是 “表现”而非“资源”,但是应该在构建系统时允许客户端指定请求的内容格式,请牢记这一点。在我们的例子中 library API 可能包含以下 URL:

1、http://fakelibrary.org/library:图书馆基本信息,搜索图书、DVD等相关资源基本功能的链接。

2、http://fakelibrary.org/book:存放书籍的“信息空间”。从概念上说,这里可能会存放所有的书籍。显然,如果这个问题得到解决,我们不会希望返回所有图书,而是希望通过类别、搜索关键词等来检索图书。

3、http://fakelibrary.org/book/category/1234:在书籍的信息空间里,我们可以指定类别浏览,例如成人小说、儿童书籍、园艺书籍等。使用杜威十进制图书分类法是可行的,但我们也可以想象自定义分组。问题的关键在于,这种“信息空间”可能是无限的,而且可能收到人们实际关心的信息类型影响。

4、http://fakelibrary.org/book/isbn/978-0596801687:提到某本具体的书,应该包括书名、作者、出版商、系统中的拷贝数、可用拷贝数等信息。

译注:杜威十进制图书分类法由美国图书馆专家麦尔威·杜威发明,于1876年首次发表,历经22次的大改版。该分类法以三位数字代表分类码,共

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值