首页
学习
活动
专区
圈层
工具
发布

【API架构】REST API 设计的原则和最佳实践

这篇最佳实践文章面向对创建 RESTful Web 服务感兴趣的开发人员,这些服务提供跨多个服务套件的高可靠性和一致性;遵循这些准则;服务定位于内部和外部客户快速、广泛、公开采用。...这是一个完整的图表,可以轻松理解 REST API 的原理、方法和最佳实践。 现在,让我们从每个盒子的原理开始详细说明它。...最佳实践 现在,让我们换个角度来了解 REST 的基本最佳实践,这是每个工程师都应该知道的。 保持简单和细粒度:创建模拟系统底层应用程序域或系统数据库架构的 API。...当链接在响应中返回时,API 变得更具自我描述性。对于支持分页的响应中返回的集合,“first”、“last”、“next”和“prev”链接至少是有益的。...资源命名:当资源命名正确时,API 是直观且易于使用的。做得不好,同样的 API 会让人感觉很笨拙,并且难以使用和理解。RESTful API 适用于消费者。

1.8K10

REST API 设计最佳实践:如何构建、设计和使用 API ?

但是,我主要接触的是REST,这是一种基于资源的API和Web服务开发架构风格。在我的职业生涯中有很大一部分时间都参与了构建、设计和使用API 的项目。...因此我决定写篇文章分享一下,在设计 REST API 时的最佳实践。以下是关于设计优秀REST API 的一些建议、提示和指导,帮助您让消费者(以及开发人员)满意。 1....尽管如此,你可能还在想:“但我按照您推荐的方式,在响应体中发送了错误详细信息,那么问题出在哪里呢?” 让我给你讲个故事吧。...分页允许用户逐步获取数据集。最简单类型的分页就是按页码进行分页,它由page和page size确定。现在问题来了:如何将这样的功能融入REST API?...如果资源以某种方式已经存在,但这不应被视为错误。 13. 使用专门针对REST API的网络框架 作为最后一个最佳实践,让我们讨论这个问题:如何在您的API中实际应用最佳实践?

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    创建 REST API 的最佳入门教程

    如果你看到这里,你以前可能听说过API 和REST,然后你就会想:“这些都是什么东西?”。也许你已经了解过一些这方面的知识,但却不知道从何入手。...在这个教程中,我将会诠释REST的基础以及如何给应用创建一个API(包括认证授权)。 ? 什么是API?...(IE尝试以PUT请求创建相同的资源时) API响应格式 当你请求HTTP时,你可以请求你想要接收的格式。...创建一个REST API 事实上,创建一个REST API是超出此教程范围的,因为它是有特定语言的。...其实,网上已经有一个做上面这件事的很流行的标准方式,叫做OAuth(开放授权:是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),与以往的授权方式不同之处是

    3.3K20

    13 个设计 REST API 的最佳实践

    避免在 URI 中使用动词 如果你理解了第 1 条最佳实践所传达的意思,那么你现在就会明白不要将动词放入 REST API 的 URI 中。...不要嵌套资源 使用 REST API 获取资源数据,通常情况下会直接获取多个或者单个,但当我们需要获取相关联的资源时,该怎么做呢?...采用 REST API 定制化的框架 作为最后一个最佳实践,让我们来探讨这样一个问题:你如何在 API 的实施中,实践最佳实践呢?...但这样做的问题是,通常,web 框架并不是针对构建 REST API 服务而专门存在的,换言之,Flask 和 Express 是两个十分通用的框架,但它们并非特别适合用于构建 REST API 服务。...在各种语言中,许多专门用于构建 REST API 服务的新框架已经出现了,它们可以帮助你在不牺牲生产力的情况下,轻松地完成工作,同时遵循最佳实践。

    3.9K20

    REST API和GraphQL API的比较

    REST API REST(表述性状态传输)API 是一种应用程序接口 (API) 的架构风格,它使用 HTTP 请求来访问和使用数据。...同样,将数据提供给客户端的方式是 GraphQL 和 REST 分歧最大的地方。在 REST 设计中,客户端提交 HTTP 请求,数据作为 HTTP 响应返回。...在 GraphQL 架构中,客户端提交查询以获取数据。 典型场景 REST API 假设您有一个 API 来获取学生数据。...为了避免数据获取不足和过度获取,灵活的样式定义了信息请求的结构,并从服务器返回相同的结构。 与 GraphQL 相比,REST API 具有严格的数据结构,可能首先返回不相关的信息(过度获取)。...与 REST API 相比,这是一个明显的区别,在 REST API 中,每个 状态代码都指向某种类型的响应。

    1.2K10

    构建强大REST API的10个最佳实践

    在项目开发中,我们经常会使用REST风格进行API的定义,这篇文章为大家提供10条在使用REST API时的最佳实践。希望能够为你带来灵感和帮助。...这一条最佳实践非常明确,也就是说我们在使用REST API时,代表资源分类的部分,比如上图中的“users”和“customers”,使用users更泛化,不够具体,可能是To C的用户,也可能是To...为了保持版本的兼容性,依旧流量和功能的控制等,通常需要对API进行版本控制,这个是仅限于REST API,而是比较通用的一条最佳实践,特别是真的终端是APP的情况。...7、使用查询参数进行过滤、排序和搜索 查询参数允许你在HTTP请求的URL中提供额外的信息,以控制服务器返回的响应。 8、实施身份验证和授权 通过实施适当的身份验证和授权机制来保护API。...然而,这种方法违反了RESTful API的关键原则:它们需要是无状态的。 10、文档化你的API 为你的API提供全面的文档,包括端点细节、请求/响应示例和使用指南。

    43110

    2019-05-31 使用 REST-Assured 测试 REST API 的进阶技巧和最佳实践

    各种针对 REST API 的测试工具也应运而生,《使用 Rest-Assured 测试 REST API》已进行了初步的介绍。...REST API 的测试有其自己的特点,虽然测试执行很快,很适合自动化测试,但是通常参数特别多,请求体和返回体有时也很复杂。...从本质上说,REST API 的测试主要是测试 HTTP 的 GET/POST/DELETE/PUT 这几个方法。其中,最复杂的主要是 GET 和 POST/PUT 两种情况。...它的安装和简单的使用本文就不再赘述,请参考《使用 Rest-Assured 测试 REST API》。 我们首先看前面提到的第一个复杂点--验证返回体。JSON 返回体因为其结构简单,非常常用。...小结: 本文介绍了如何使用 Rest-Assured 和 JSON Schema 测试 REST API 的方法及其他技巧。

    2.1K20

    REST API和SOAP API之间的区别

    “无状态”这个术语是一个至关重要的部分,因为它允许应用程序以不一样的方式进行通信。 一个RESTful API服务通过统一资源定位器(URL)公开。这个逻辑名称将资源的标识与所接受或返回的标识分开。...基于rest的请求的一个重要方面是,每个请求包含足够的状态来响应请求。这就允许服务器上的可见性和无状态性、扩展系统所需的属性以及识别正在发出的请求。这种状态还允许缓存特定的结果。...如果没有对RESTful架构实现的更宏观的理解,很容易失去实践的意图。 REST最好用于管理系统,通过将产生和使用它的技术产生和使用的信息解耦。...当由于技术、组织或过程复杂性而不能在单个事务的范围内维护请求的生命周期时,SOAP是最佳的利用方式。 Verbs ? 谓词是可以与服务器上的资源交互的方法或操作。...它可能需要一些额外的处理来跟踪以前删除的从未存在的资源和资源(应该返回404响应代码)。一些安全策略可能要求您返回一个404响应代码,以防止出现资源的泄漏信息。

    2.4K10

    REST API和SOAP API之间的区别

    “无状态”这个术语是一个至关重要的部分,因为它允许应用程序以不一样的方式进行通信。 一个RESTful API服务通过统一资源定位器(URL)公开。这个逻辑名称将资源的标识与所接受或返回的标识分开。...基于rest的请求的一个重要方面是,每个请求包含足够的状态来响应请求。这就允许服务器上的可见性和无状态性、扩展系统所需的属性以及识别正在发出的请求。这种状态还允许缓存特定的结果。...如果没有对RESTful架构实现的更宏观的理解,很容易失去实践的意图。 REST最好用于管理系统,通过将产生和使用它的技术产生和使用的信息解耦。...当由于技术、组织或过程复杂性而不能在单个事务的范围内维护请求的生命周期时,SOAP是最佳的利用方式。 Verbs 谓词是可以与服务器上的资源交互的方法或操作。...它可能需要一些额外的处理来跟踪以前删除的从未存在的资源和资源(应该返回404响应代码)。一些安全策略可能要求您返回一个404响应代码,以防止出现资源的泄漏信息。

    1.7K20

    正确甄别API、REST API、RESTful API和Web Service之间的异同

    这个对API的定义太过于广泛和抽象,而通俗的讲,API是一段应用程序与另一段应用程序相互“交流”的方式(协议)。...在Web应用程开发中,API是我们通过网络进行数据检索的一种主要方式,API文档将告知你检索数据的URL列表、查询参数、请求方式以及响应状态,其目的是降低Web应用程序开发难度,共享两个应用程序之间的数据...也就是说,RESTful API是REST API的非正式实现方式,因为实现REST API的方式有很多,RESTful API只是其中一种,且没有完全满足REST API的所有设计原则,每个开发者在实现...除了上述的内容之外,你还可以通过提供键值对的方式对查询数据进行过滤,如获取所有的学生数据时,只想获取性别为女性的学生数据,则可以通过这样的方式来完成: [GET] http://www.example.com...REST API是API的一个子集,所有的REST API都是API;RESTful API是对REST API架构风格的一种非正式实现方式。

    28K1313

    Rest API请求管理最佳实践:RestClient-cpp库的应用案例

    随着各种网络服务和应用程序的不断涌现,有效地管理和调用REST API变得至关重要。为了解决这一需求,开发人员们倾向于寻找可靠且易于使用的库来简化REST API请求的处理。...在这篇文章中,我们将介绍RestClient-cpp库,探讨其在REST API请求管理中的最佳实践,并通过一个实际的应用案例来展示其强大的功能和灵活性。什么是RestClient-cpp?...实践应用示例为了更好地理解RestClient-cpp库的应用,我们将通过一个简单的实例来演示其在REST API请求管理中的最佳实践。...处理响应:根据API返回的响应状态码和数据,进行相应的处理,可包括数据解析、错误处理和业务逻辑执行等。...结论通过以上实例,我们可以清晰地看到RestClient-cpp库在REST API请求管理中的应用。它简化了请求的发送和响应的处理过程,使得开发人员能够更加专注于业务逻辑的实现,提高了开发效率。

    53510

    十个书写Node.js REST API的最佳实践(下)

    接 《十个书写Node.js REST API的最佳实践(上)》 5. 对你的Node.js REST API进行黑盒测试 测试你的REST API最好的方法之一就是把它们当成黑盒对待。...译者注:mock 和 stub 都是测试的方法 有个可以帮你进行Node.js REST API进行黑盒测试的模块叫做supertest。...你可以把这些头想作先决条件:如果他们被碰到,请求会以一种不同的方式执行。 这些头会试着检查存储在服务器上资源的版本是否和同样资源的给定版本一致。...include=email&page=1&limit=10 这很容易失控——正如你想一直为你的模型获得同样响应格式一样。这就是GraphQL和Falcor发挥所长的地方。...GraphQL提供一个你的API数据的完整和易懂的描述,给予客户端能力以获取其所需要的并且绝不多做,随着时间推移让扩展API更加容易,并且提供强有力的开发工具。

    2.5K00

    一种更优的方式获取私有API

    在编译私有的Android SDK中讲述了如何通过编译一个完整的SDK来获取一些稀有的API,但是这个方法有几点不足: 编译耗时 不够灵活,换一个API版本难道要再编译一个对应的SDK?...其实私有API仅仅是为了在开发过程中欺骗编译器而已,你可以使用反射,但有一堆代码要写,运行时还影响了效率。...我想到一种更优的方法:将需要开发的API单独编译一个jar,这样和特定SDK版本脱离,还直接从现有编译结果里面拼凑一下即可得到。在项目中已provided方式引入这个jar即可欺骗编译器。...以android.os.ServiceManager这个没有包含在Google提供的SDK来说明问题: 在AOSP的编译结果中找到编译的class文件: out/target/common/obj/JAVA_LIBRARIES...结果 copy到项目中, provided方式依赖。 如果需要其他API,参考上面操作即可。

    71630

    实现提前获取订单状态实时更新的最佳方式——ASN

    如何实现购买预算最大化 ,或者是如何计划安全库存 库存水平以及如何提前获取订单状态已经成为让采购商和分销商最为头疼的事情。究竟怎样才能提高订单和供应链的即时性和可见性呢?...采购商和分销商急需解决这些问题,在不影响客户满意度的情况下管理库存。 要想解决以上问题,需要对订单状态具有最精准的把握。为什么采购商和分销商如此急于实现订单状态实时更新呢?...ASN即提前发货通知,如果没有ASN,配送中心的收货过程效率会很低。根本原因是仓库无法及时获取什么货物即将到达以及何时到达等关键信息。...它为零售商或分销商提供了主动管理库存所需的数据,并对订单能够准时到达到达的时间和方式更加胸有成竹 。...如果您想了解有关EDI是如何改进订单和供应链可见性所需的流程的更多信息,欢迎联系我们~ 更多EDI信息,请参阅: EDI电子数据交换全解指南

    1.4K30

    用ASP.NET Core 2.1 建立规范的 REST API -- 保护API和其它

    但是它主要用于包含页面的web应用, 例如MVC或Razor Page, 并不适用于REST/Web API, 所以不介绍它了....我一直在用Identity Server 4, 但是这里不会深入介绍, 这里主要介绍如何实现REST API, 如果有需要的话, 可以写一系列关于Identity Server 4的文章....它提供了一种紧凑的, 自包含的方式在双方之间用JSON对象来传输信息. JWT使用 HMAC secret 或 RAS公有和私有键对(key pair) 这两种方式来进行签名....这样就可以保护API,避免一些非正常使用的场景,例如网络爬虫或请求太多而导致API的性能严重下降,Dos和DDos。...有可能会包含一个Retry-After 响应Header,而响应的body应该包含解释当前状态的细节信息。当然这都是理论上要求的。

    1.5K20

    如何实现和调试REST API中的摘要认证(Digest Authentication)

    如何实现和调试REST API中的摘要认证(Digest Authentication)在保护REST API时,开发者通常会在多种认证机制之间进行选择,其中摘要认证(Digest Authentication...本文探讨了使用摘要认证的原因,解释了其原理,提供了Java和Go语言的实现示例,并提供了测试该认证的工具和方法。为什么使用摘要认证来保护REST API?...数据完整性保护:通过哈希响应,摘要认证能够确保传输过程中数据未被篡改,有效保护通信的完整性。这些特性使得摘要认证在需要注重安全性的REST API应用中成为一个可靠的选择。...函数}Go实现在Go中,你可以利用http包和自定义传输方式来处理摘要认证:package mainimport ( "fmt" "net/http" "time")func main...结论摘要认证是一种强大的REST API认证机制,相比基本认证(Basic Authentication),它能够提供更高的安全性。

    43300

    技术应用|用于 REST API 开发和测试的 10 大工具

    前言用于 REST API 开发和测试的 10 大工具这些工具将在基于 REST 的项目(如设计、开发、测试和文档)的每个阶段为您提供帮助。...在接口测试方面,Postman能够模拟客户端发送请求,获取响应结果,并验证响应中的结果数据是否与预期值相匹配。...使用Rest-Assured测试REST API,和真正的用户使用REST API一样,只不过Rest-Assured让这一切变得自动化了。...文件的方法、参数和模型紧密集成到服务器端的代码,允许API始终保持同步。Swagger让部署管理和使用功能强大的API从未如此简单。...Apiary提供了一种简洁的语法来描述REST API,自动生成API文档,并允许开发人员测试和调试API。此外,Apiary还支持与代码库集成,以便将API文档与实际代码保持同步。

    1.6K00
    领券