共计 2724 个字符,预计需要花费 7 分钟才能阅读完成。
全文 2070 字
浏览工夫约 6 分钟
本文首发于码匠技术博客
CRUD 和 REST 是利用开发畛域中两个比拟常见的概念,但因为二者之间概念存在重叠而经常被混同。简略来说,REST 是一种软件架构格调,是一种针对网络应用的设计和开发方式。而 CRUD 是一个缩写,指的是数据库中能够执行的四种基本操作:创立 (Create)、读取 (Read)、更新 (Update) 和删除 (Delete)。
本篇文章码匠将带大家深刻理解二者的异同以及具体应用过程中的注意事项。
什么是 CRUD?
CRUD 是来自于编程畛域的缩写,它指的是被认为是实现持久性存储利用的四个性能:创立、读取、更新和删除。然而,现如今 CRUD 常作为「CRUD 利用」呈现,「CRUD 利用」指的是通过一个网络应用或挪动利用的用户界面,进行创立、读取、更新和删除信息的操作。
码匠提供图形界面模式的查问设置
CRUD 的倒退简史
CRUD 问世于 20 世纪 80 年代,用于形容 SQL 中的数据库基本操作。首次提及是在 1990 年 Haim Kilov 的文章《从语义到面向对象的数据建模》中,起初在 1983 年 James Martin 所著的《治理数据库环境》一书中首次广为人知。
CURD 设计之初是为了加强数据库的持久性存储,而在古代软件开发中,它又为 SQL、DDS 和 HTTP 协定等应用程序提供了设计准则。
CRUD 规定
从创立到删除,CRUD 根本蕴含一个循环的概念:
- 创立 (CREATE) 用来增加一项或多项纪录,在数据库中体现为通过 INSERT 语句生成新的记录。
- 读取 (READ) 则是依据不同的参数检索数据,相当于 SQL 中的 select 语句。
- 更新 (UPDATE) 过程用于更新和批改纪录。
- 删除 (DELETE) 过程为删除一项或多项纪录。
CRUD 起初还呈现了其余变形:
- CRUDL:创立 (create)、读取 (read)、更新 (update)、删除 (delete)、列表 (listing)
- BREAD:浏览 (browse)、读取 (read)、编辑 (edit)、增加 (add)、删除 (delete)
- DAVE:删除 (delete)、增加 (add)、预览 (view)、编辑 (edit)
- CRAP:创立 (create)、复制 (replicate)、追加 (append)、解决 (process)
什么是 REST?
REST 协定的创始人 Roy Fielding 将 REST 形容为分布式超媒体零碎内架构元素的抽象化。REST 架构格调为网络系统开发提供了对立的规范,并规定了零碎的互动形式。
REST 的倒退简史
工夫推回 2000 年,这个时候开发人员并没有一个用来开发网络 API 的规范,他们借鉴了一大堆不同的协定,这些协定大都简单繁琐、难以执行。于是 Roy Fielding 和他的共事一起开发了 REST 协定,进而容许两个服务器能在寰球范畴内替换数据。
合乎 REST 的零碎被称为 RESTful 零碎。这些零碎的特点是无状态性以及客户端和服务器的拆散。自 2000 年推出以来,REST 曾经被用于各种公司各种行业。
REST 规定
REST 有六个约束条件:
对立接口
RESTful 架构所遵循的统一性准则禁止在一个 API 中应用多个独立接口。通过简化和解耦架构,每个局部都能够独立倒退。对立接口的四个领导准则是:- 资源辨认:每个资源都有一个资源标识,且每个资源的资源标识能够用来惟一地表明该资源。
- 通过表述来操作资源:这里的表述是对本身的表述,也就是说一个 REST 零碎所返回的资源须要可能形容本身并提供足够的用于操作该资源的信息,比方如何对资源进行 CRUD 等操作。换句话说,一个 REST 服务不须要额定的文档对如何操作资源进行阐明。
- 自描述的信息:在 REST 零碎中传递音讯时还要能提供本身如何被解决的信息。例如该音讯所应用的 MIME 类型,是否能够被缓存等。
- 超媒体作为利用状态的引擎:客户端通过协定主体内容、查问字符串参数、申请头和申请 URI(资源名称)传递状态。服务端通过协定主体内容、状态码和响应头向客户提供状态。
- 客户 / 服务器模型(CS 架构)
通信只能由客户端单方面发动,体现为申请 - 响应的模式。客户 - 服务器模型束缚背地的准则是关注点的拆散,即拆散用户界面和数据存储两个关注点。这有助于客户端和服务器的独立倒退,同时改善了用户界面跨平台的可移植性和可扩展性。 - 无状态
无状态规定,从客户端到服务器的每个申请必须蕴含了解和实现该申请所需的全副信息,不能利用任何存储在服务器端的上下文,所以,会话状态要全副保留在客户端。 - 缓存
缓存是为了改善网络效率而提出的,缓存要求服务器的响应中的数据被隐式地或显式地标记为可缓存或不可缓存。例如,如果响应是可缓存的,那么当前再遇到雷同的申请该相应数据可反复利用。 - 分层零碎
分层零碎通过限度档次之间的行为(例如每一层对其余层都是只读的)来将架构合成为若干层级。每个层级之间都有肯定的独立性,两头档次还反对通过实现负载平衡和共享缓存来进步零碎的可扩展性。 - 按需代码 (Code-On-Demand 可选)
客户端能够下载运行服务端传来的代码(比方 JavaScript)通过缩小一些性能简化了客户端。
CRUD VS REST
相同点
CRUD 的每个操作都能够被映射到 DDS、SQL 和 HTTP 协定中。HTTP 协定是 RESTful 架构中资源之间的分割,是 REST 根底的外围局部。而 REST 架构被用来在 Web 利用中执行 CRUD 操作。
CRUD 操作与 HTTP 协定的映射:
CRUD 操作 | HTTP 协定 |
---|---|
CREATE | POST |
READ | GET |
UPDATE | PUT |
DELETE | DELETE |
看似 CRUD 和 REST 存在根本指令的重叠,但应该留神的是,REST 并不简略地等同于 CRUD,RESTful 架构也不仅仅意味着映射 GET、PUT、POST 命令。
不同点
CRUD 次要被用于形容软件系统中数据库或者长久层的基本操作性能。而 REST 架构的核心理念是应用 HTTP 作为利用协定操作网络资源,并且以超媒体作为利用状态转移的载体。
对于码匠
码匠是国内一款面向开发者的低代码平台,咱们为将您提供一种更便捷的数据可视化形式。相较于国外开发的 HRM/Admin/CRM/CMS 等后盾工具,咱们的 UI 界面设计更加适宜国内业务场景。同时咱们还整合了多款国内常见数据源,包含飞书、企业微信、钉钉、阿里云 OSS 等。不仅如此,咱们还一站式提供了企业外部零碎罕用的租户治理、细粒度的权限管制、审计日志等性能,让您疾速搭建后盾利用的同时,也为您的企业信息安全保驾护航。
咱们的开创团队来自谷歌、快手、百度等公司,深刻理解疾速迭代的软件系统对业务的重要性和当下软件开发的复杂性,咱们认为在将来软件不会是从零开发的,于是咱们从新思考,发明新的工具,帮忙公司更好更快地开发软件。
想要理解更多,欢送来亲自摸索!