restful和rest_REST和RESTful API开发的基础

Web开发人员经常谈论REST原理和RESTful数据体系结构 ,因为它是现代开发的关键方面,但有时会令人难以置信。 REST本身并不是一项技术,而是一种使用某些组织原则创建API的方法 。 这些原则将指导开发人员,并创建一个更通用的环境来处理API请求。

在本文中,我想从鸟瞰的角度解释RESTful开发实践 。 我想解决是问题而不是解决方法 。 尽管我将同时涉及这两个方面,但是本文是为从事Web开发的人员撰写的,但是根本无法理解REST API的概念。

REST适用于Web开发人员

缩写REST代表代表性状态转移 。 这听起来可能有些混乱,并且Wiki条目使其听起来更加混乱。 但是可以简化术语。

REST只是用于数据传输的一系列准则和体系结构样式 。 它通常应用于Web应用程序,但也可以将数据传递到软件。

缩写API代表应用程序编程接口,是与其他库或应用程序连接的方法。 Windows具有多个API ,Twitter也具有Web API ,尽管它们执行具有不同目标的不同任务。

结合在一起,RESTful API是遵循REST体系结构的API。

REST架构到底是什么?

这是很难确定细节的地方。 但是,存在一些体系结构常量 ,例如:

  • 整个API的一致性
  • 无状态存在 ,即没有服务器端会话
  • 在适当的地方使用HTTP状态代码
  • URL端点与逻辑层次结构的使用
  • URL中的版本控制,而不是HTTP标头中的版本控制

没有像W3C HTML5规范这样过分具体的准则,这可能会导致混乱 ,并且围绕REST术语存在不确定性。

此外,即使大多数现代RESTful API都适用上述规则 ,也不应将其视为一成不变的规则

宁静的api图预览
图片:restful-api-design.readthedocs.io

REST是一种轻量级的方法 ,使其非常适合HTTP数据。 这就是为什么REST在网络上如此流行的原因,以及为什么它被广泛视为API开发的最佳选择。

正如Vinay Sahni所说,“ API是开发人员的UI。” 一切都应该易于使用,并提供出色的用户体验。 RESTful API旨在做到这一点。

RESTful API的关键要点

这些技巧是在严格针对Web应用程序的API的上下文中。 这意味着需要HTTP ,并且通常意味着API数据托管在外部服务器上 。 让我们研究一下RESTful API在API用户方面的工作方式。

API用户是Web开发人员,他们可以构建连接到外部API服务器的脚本,然后通过HTTP传递必要的数据。 然后,开发人员可以在其网站上显示数据, 而无需亲自访问外部服务器 (例如提取Twitter数据)。

一般来说,有四个用于访问RESTful API的 命令

  1. GET用于检索对象
  2. POST用于创建新对象
  3. 用于修改或替换对象的PUT
  4. DELETE用于删除对象

这些方法中的每一个都应与API调用一起传递,以告诉服务器该怎么做。

绝大多数Web API 仅允许GET请求从外部服务器提取数据。 身份验证是可选的,但在允许潜在破坏性的命令(例如PUTDELETE时肯定是个好主意。

但是,到目前为止还没有很多RESTful API。 考虑一下Pokéapi ,它是一个免费的PokémonAPI数据库。 它对公众开放并具有适当的速率限制(在一段时间内将用户限制为一定数量的API请求),但仅允许使用GET方法访问资源。 俗称这是“ 仅消耗API”

宠物小精灵api屏幕截图

返回类型也很重要,并且应保持所有资源的同质性 。 JSON是一种流行的返回类型,其中包含说明正确数据结构的在线规范

RESTful API将名词用于API对象 ,并将动词用于对这些对象执行操作 。 身份验证可能是其中的一部分,速率限制也可能是其中的一部分。 但是,可以非常简单地使用API​​,而不必担心用户限制。

访问API资源

通常可以从直接的网站地址访问公共API。 这意味着URL结构很重要 ,并且仅应用于API请求。

某些URL可以包含前缀目录,例如/v2/用于先前API的更新版本2。 对于不想折旧其1.x API但仍要提供最新结构的开发人员来说,这很常见。

我真的很喜欢这篇文章,内容涉及基本的URL结构以及其他服务的示例。

请注意,基于HTTP方法 ,端点的返回数据将发生巨大变化 。 例如, GET检索内容,而POST创建新内容。 该请求可能指向同一端点,但结果可能会大不相同。

Reddit API文档网站
图片:Reddit API文档

在线查看示例可以帮助您更清晰地理解概念。 我们已经看过Pokeapi ,但是这里有一些其他现实世界的API示例供您阅读:

建立自己的API

构造您自己的API的过程不应该轻描淡写,但是它也没有您想像的那么复杂。 它确实需要了解API设计模式和最佳实践才能构建出真正的价值。

每个API必须连接到您的服务器以返回某种数据。 您不仅需要编写代码来做到这一点,而且还需要格式化返回数据。 其他潜在的要求包括身份验证速率限制 ,因此构建API当然不适合胆小者。

但是,让我们看一下API体系结构的一些基本原则

建立端点

API开发的一方面是构建端点创建资源时,您想使用名词,而不是动词 。 这意味着API数据应该返回一个人,地方或事物,通常是具有特定属性的事物 (例如,一条推文及其所有元数据)。

学习命名名词可能很困难,但这是API开发的关键方面。 尽可能简化是最好的。

争论的焦点是单数名词还是复数名词。 如果您要创建Twitter API,则可能首先拥有对象组(即鸣叫),然后才具有对象项(即鸣叫ID)。

$ /tweet/15032934882934
$ /tweets/15032934882934

在这种情况下,我认为单数形式看起来更好。 当仅返回一个资源时尤其如此。 但是,没有记录在案的100%正确答案,因此请最适合您的项目。

设置退货类型

另一个考虑因素是返回类型数据 。 大多数网络用户期望JSON内容,因此这可能是最佳选择。 如果您要同时提供XML和XML,则XML是另一种选择。 但是,JSON是Web开发人员中最基本的API返回类型。

API开发还有很多,所以我建议先使用API 。 通过这种方式,您可以看到其他开发人员如何构建他们的API,并希望您会逐渐熟悉典型要求。

如果您只是入门,请考虑浏览以下开发教程:

更多资源

学习Web应用程序开发的最佳方法是通过实践。 公认的理论总是值得研究的,因为它使您可以与开发人员交谈并了解事物的工作原理。

但是开始进行API开发的一个好地方是首先连接到其他API 。 了解客户端连接的基础知识,然后您可以通过从头开始创建自己的API来进行服务器端API开发。

如果这是您的目标,请考虑以下资源,以在您的旅途中提供帮助。

图书
文章

翻译自: https://www.hongkiat.com/blog/rest-restful-api-dev/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值