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

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

不要返回纯文本 尽管并非强制规定的,但大多数REST API通常约定使用JSON作为数据格式。然而,仅返回包含JSON格式字符串的响应体是不够好的。您还应该指定Content-Type标头。...不要嵌套资源 您可能已经注意到,REST API处理的是资源。检索资源列表或单个实例非常简单,但是,当处理相关资源时会发生什么呢?例如,假设我们想要检索特定作者(名为Cagan)的书籍列表。...您的用户可能希望检索满足特定条件的项目,或者一次只检索少量数据以提高性能,这正是过滤和分页功能所设计的目标。 通过过滤,消费者可以指定返回项目应具有哪些参数(或属性)。分页允许用户逐步获取数据集。...现在问题来了:如何将这样的功能融入REST API? 我的答案是:使用查询字符串(querystring)。 我认为使用查询字符串实现分页非常明显。它看起来像这样: GET: /books?...首先,你可能会想做类似以下操作以仅检索已发布书籍列表: GET: /books/published/ 设计问题:published 不是资源!相反,它是您要检索数据所具备特征。

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

    ⚡REST 和 SOAP 协议有什么区别?

    网站不会从它的数据库中检索这些数据,而是通过向专门提供航班、酒店等服务的 API 发送请求来获取数据的。Web API 就是使用 HTTP 协议传输数据的 API。...REST API 通过资源 URL 来访问数据,而 SOAP API 则是通过调用特定的 API 函数来操作数据。...REST 仅支持 HTTP。使用 SOAP,你可以使用 HTTP、HTTPS、用户数据协议(UDP)、传输控制协议(TCP)或简单邮件传输协议(SMTP)。...* 请求方法(CRUD 操作): * REST - 在请求中提供 GET 方法,告诉应用程序接口检索某些内容。 * SOAP - 请求中不提供方法。...而使用 GraphQL,所有 API 数据都可以通过一次查询请求获取。客户端使用过滤器缩小查询范围,从而从一个 API 中检索数据。

    1.7K00

    Tungsten Fabric支持API一览

    Tungsten Fabric支持以下API: l用于控制器配置的REST API l映射到REST配置API的Python绑定 l用于访问分析数据的REST API 下面我们逐一进行描述。...用户可以使用HTTP GET调用来检索资源列表或其属性的详细信息。 数据作为JSON对象返回。...在Python会话或脚本中,会话打开如下: 可以使用以下方法创建虚拟网络: Python绑定通常比REST API更容易使用,因为它不需要使用JSON有效负载。...Analytics API的输出采用JSON有效负载的形式。使用指向数据位置的直接URL检索UVE数据。 HTTP GET查询用于检索分析数据库中的列表,并获取其API和schemas。...Analytics API包含一个附加功能,允许为检索到的数据指定开始时间和结束时间。 根据阈值交叉事件,Analytics API可用于为存储在分析数据库中的任何时间序列配置和检索警报。

    1.2K10

    理解GET和POST区别的全面指南

    在使用API时,两个最常用的HTTP方法是GET和POST。那么这两者究竟有什么区别呢?在本文中,我们将澄清GET和POST之间的区别,重点介绍它们的独特属性和适用的用例。...REST API原理与API通信要理解GET和POST的作用,首先需要理解REST API的原理及其如何操作。REST(表现层状态转移)是一种设计风格,用于通过HTTP方法管理和操作资源。...因此,选择使用哪种操作和相应的HTTP方法通常是特定于REST API的。API通信如何工作REST定义了一种API设计的方法,涉及客户端与服务器之间的交互。...在理解了REST API的基础之后,让我们来定义GET和POST:GETGET是一种HTTP方法,用于从指定的服务器请求数据。通过使用GET方法,客户端可以基于请求中发送的参数检索信息。...通过恰当的使用这些方法,开发者可以创建既高效又安全的API。根据它们的独特属性,了解何时以及如何使用每种方法是成功API开发的关键。

    55010

    GPT动作中的数据检索

    一个动作可能会:使用关键字搜索访问API检索数据使用结构化查询访问关系数据库检索记录使用语义搜索访问向量数据库检索文本片段我们将在本指南中探讨与各种检索集成相关的特定考虑事项。...使用API进行数据检索许多组织依赖第三方软件存储重要数据。...这些提供商通常提供REST API,使外部系统能够搜索和检索信息。当构建一个与提供商的REST API集成的动作时,请首先查阅现有文档。...获取 - 一旦找到匹配的文档,您需要一种检索它们的方法。请参见Google Drive的file.get方法。...身份验证方案例如,Google Drive使用OAuth对用户进行身份验证,并确保仅其可用文件可供检索。OpenAPI规范一些提供商将提供一个OpenAPI规范文档,您可以直接导入到您的动作中。

    1.4K10

    敏捷测试价值观、方法和实践读书笔记(8)

    API测试 API基础介绍 1Web Service Web Service通常使安全用XML(可扩展标记语言),这意味着其比json更 Web Service是 WebAPI的子集,其仅包含 SOAP...它定义了特定请求选择所使用的 WebServices 类型,并且使用 XML 格式的文件描述 Web Services 提供的功能。...GET:此方法用来检索使用 PUT 或 POST 等任何方法发送到 Web 服务端的信息。此方法没有请求主体,执行成功后会得到响应状态码 200。...POST:此方法用于请求主体、指定 URL、文档键、上下文键等创建文档或记录到 Web 服务端,使用 GET 方法来检索 POST 到 Web 服务端的内容,执行成功后会得到响应状态码 201。...SOAP 服务没有任何内建方法,而 REST 服务有 GET、PUT、POST 和 DELETE SOAP 服务是有状态的,而 REST 服务是无状态的。

    38010

    xwiki功能-XWikiRESTfulAPI

    资源可以用以下URL检索: http://localhost:8080/xwiki/rest/wikis 除了可以检索XML格式的内容,你也可以通过添加参数?...media=json来检索JSON格式的内容。例如:http://localhost:8080/xwiki/rest/wikis?...解决浏览器限制 正如前面所说的,通过使用浏览器的XMLHttpRequest对象发送信息。但是,目前许多浏览器仅支持GET和POST方法,所以这是不可能的发送,例如,PUT请求。...资源的URI使用URI templates指定。括号内的元素是形式参数,并应实例化到实际值来检索相关的资源。...客户端访问/使用REST API则可以声明对xwiki-platform-rest-api的依赖,然后就可以与它交互信息。有两个使用用例: 另一个平台模块想要对现有资源生成带有链接响应。

    3.1K20

    与我一起学习微服务架构设计模式3—微服务架构中的进程间通信

    你可以在实现REST API或消息机制的服务时,包含版本号 进行次要且向后兼容的改变 理性情况下应该只进行向后兼容的更改: 添加可选属性 向响应添加属性 添加新操作 服务应该为缺少的请求属性提供默认值...,客户端应忽略任何额外的响应属性,这样老版本的客户端能直接只用更新的服务 进行主要且不向后兼容的改变 此时必须在一段时间内同时支持新旧版本的API 假如使用REST,可以在URL中嵌入主要版本号,或者使用...原则设计,基本思想是由GET请求返回的资源信息中包含链接,这些链接能够执行该资源允许的操作 最流行的REST IDL是Open API的规范,他是从Swagger开源项目发展而来的。...一个请求中获取多个资源的挑战 REST资源通常以业务对象为导向,设计REST API时常见问题是如何使客户端能够在单个请求中检索多个相关对象。...纯REST API要求客户端发出多个请求,更复杂的情况时需要更多往返并遭受过多延迟,其中一个解决方案是API允许客户端在获取资源时检索相关其他资源,如果情况更复杂耗时,则使用GraphQL和Falcor

    2.4K10

    REST API和SOAP API之间的区别

    要请求和检索资源,客户端将发出超文本传输协议(HTTP) GET请求。这是最常见的请求,每次在浏览器中键入URL并单击return、选择书签或单击锚点引用链接时执行。...对于与RESTful API的编程交互,可以使用十几种或更多的客户端API或工具。...这就允许服务器上的可见性和无状态性、扩展系统所需的属性以及识别正在发出的请求。这种状态还允许缓存特定的结果。服务器地址和请求状态的组合,将计算散列键组合成结果集。...REST最好用于管理系统,通过将产生和使用它的技术产生和使用的信息解耦。我们可以实现: 性能 可伸缩性 普遍性 简单 可修改性 可扩展性 这并不是说不能构建基于soap的系统来展示其中的一些属性。...总是会有特定于应用程序的行为,但是我们越能深入到非特定于应用程序的行为中,我们的系统就会越有弹性、更容易访问和更容易维护。 POST 当客户端无法预测要创建的资源的标识时,将使用POST。

    2.8K10

    REST API和SOAP API之间的区别

    要请求和检索资源,客户端将发出超文本传输协议(HTTP) GET请求。这是最常见的请求,每次在浏览器中键入URL并单击return、选择书签或单击锚点引用链接时执行。...对于与RESTful API的编程交互,可以使用十几种或更多的客户端API或工具。...这就允许服务器上的可见性和无状态性、扩展系统所需的属性以及识别正在发出的请求。这种状态还允许缓存特定的结果。服务器地址和请求状态的组合,将计算散列键组合成结果集。...REST最好用于管理系统,通过将产生和使用它的技术产生和使用的信息解耦。我们可以实现: 性能 可伸缩性 普遍性 简单 可修改性 可扩展性 这并不是说不能构建基于soap的系统来展示其中的一些属性。...总是会有特定于应用程序的行为,但是我们越能深入到非特定于应用程序的行为中,我们的系统就会越有弹性、更容易访问和更容易维护。 POST 当客户端无法预测要创建的资源的标识时,将使用POST。

    2.1K20

    .net core实践系列之短信服务-Sikiro.SMS.Api服务的实现

    REST API简介 REST Representational State Transfer的缩写,翻译为“表现层状态转化”,是由Roy Thomas Fieding在他的博士论文《Architectural...下面有对比 动作 主要动作:   GET:检索单个资源;   POST:主要是创建资源,但是GET的参数长度受限,因此也可以用在复杂参数的检索资源场景;   PUT:更新资源所有属性,也可以称为替换资源...对比 RPC SMSApi.com/api/GetSMS SMSApi.com/api/CreateSMS 传统的接口设计面向过程的,每个动作有特定的URI。...REST SMSApi.com/api/SMS  GET SMSApi.com/api/SMS  POST REST API每个资源只有唯一的URI,而资源可以有不同的动作执行相应的接口 RPC的更加倾向于面向过程...:port/api/sms/_search 查询短信记录 获取一条短信记录就不多解析了 查询短信记录 动作我使用了POST,有人会问检索资源不是用GET么?

    2K20

    RESTful API设计之进阶篇:HATEOAS

    在本节中,我们将使用Junit、 rest-assured和Hamcrest来测试API接口的发现性特征。由于以前已经保护了REST服务,所以每个测试首先需要在使用API之前进行身份认证 。...发现有效的HTTP方法 当用无效的HTTP方法调用REST服务时,响应应该是405 METHOD NOT ALLOWED;此外,它还应该帮助客户端发现适用于该特定资源的有效HTTP方法,在响应中使用AllowHTTP...这个测试涵盖了REST中链接关系的棘手主题:检索所有资源的URI使用了rel=”collection”语义。 这种类型的链接关系还没有被标准化,但是已经在使用,并被提议用于标准化。...例如,客户端应该能够在GET特定资源时发现创建新资源的URI;不幸的是,与模型create语义没有链接关系。...总结 我们已经看到了REST API是如何服务器根路径就完全被发现的,并且不需要有多深的了解——这意味着客户端可以通过GET服务器根路径来导航它。

    79720

    微服务架构中的进程间通信

    处理API更改的方式取决于更改的大小。一些更改是次要的和向后兼容的。例如,您可能会向请求或响应添加属性。设计客户端和服务是有意义的,以便遵守鲁棒性原则。使用旧API的客户端应继续使用新版本的服务。...该服务为缺少的请求属性提供默认值,客户端忽略任何额外的响应属性。使用IPC机制和消息传递格式,使您能够轻松地发展您的API很重要。 但是有时候,您必须对API进行主要的、不兼容的更改。...两种流行协议是REST和Thrift。我们先来看一下REST。 REST 今天开发REST风格的API是时尚的。 REST是一种(几乎总是使用HTTP)的IPC机制。...级别2 - 级别2 API使用HTTP动词来执行动作:GET检索,POST创建和PUT进行更新。请求查询参数和主体(如果有)指定操作的参数。...基本思想是GET请求返回的资源的表示包含用于执行该资源上允许的操作的链接。例如,客户端可以使用响应于发送的GET请求返回的订单表示中的链接来取消订单以检索订单。

    3K50

    API 架构风格抉择:SOAP、REST、GraphQL 和 RPC 的特性、优势与局限

    API 风格随时间变化 如今,许多 API 使用者将 REST 称为“宁静的 REST ”,并为 GraphQL 欢呼雀跃。而十年前,情况恰恰相反,REST 最终取代了 SOAP。...RPC使用 GET 方式获取信息,其余操作则使用 POST 方式。服务器和客户端之间的交互机制归结为调用端点并获取响应。 易于添加功能。...以动词为中心的 RPC 中的操作与以名词为中心的 REST 中的操作相反 在 REST 中,操作是使用 HTTP 方法完成的,例如 GET、POST、PUT、DELETE、OPTIONS 以及 PATCH...四、GraphQL 仅查询所需数据 它需要多次调用 REST API 才能返回所需的人员信息。因此,GraphQL 的发明就是为了改变现状。 GraphQL是一种描述如何发出精确数据请求的语法。...如何从 GraphQL 端点仅检索所需数据 如今,GraphQL 生态系统正在通过 Apollo、GraphiQL 和 GraphQL Explorer 等库和强大的工具不断扩展。

    1.2K10

    【愚公系列】2022年04月 Python教学课程 73-DRF框架之限流

    限制指示临时状态,用于控制客户端可以向 API 发出的请求速率。 与权限一样,可以使用多个限制。您的 API 可能对未经身份验证的请求设置了限制性限制,对经过身份验证的请求的限制性限制较少。...您可能希望使用多个限制的另一种情况是,由于某些服务特别占用资源,因此您需要对 API 的不同部分施加不同的约束。 如果要同时施加突发节流速率和持续节流速率,也可以使用多个节流阀。...特定部分的访问。...仅当正在访问的视图包含属性时,才会应用此限制。然后,通过将请求的“作用域”与唯一的用户 ID 或 IP 地址连接起来,形成唯一的限制键。 允许的请求速率由使用请求“作用域”中的键的设置确定。...LocMemCache 如果需要使用 除 以外的高速缓存,可以通过创建自定义限制类并设置属性来执行此操作。

    95420

    GraphQL 和 REST 优缺点对比,附上代码示例

    例如,在 REST 中,您需要向 /api/posts 发送 GET 请求来获取帖子,该请求可能会返回一个 JSON 对象,其中包含帖子标题、内容、标记、日期,可能还有用户 ID。...如果我从用户端点获取用户,我仍然需要点击 posts 端点,并使用 userid 检索 posts。...缺乏灵活性 在前一点的基础上进一步扩展,REST 依赖于创建符合前端需求的api。如果您能够预测前端在碰到特定端点时需要什么,就可以精确地调整检索到的数据,以匹配该视图。...正确使用 REST 有一个学习曲线,如果你还不知道它,你可以使用 GraphQL 更轻松地创建一个优秀的 API。...如果使用GraphQL,请决定如何处理错误 REST Api 能够更好地利用 HTTP 的错误报告特性。

    1.4K30

    REST API 最佳实践

    在这篇文章中,我将带你了解创建 REST API 时需要遵循的一些最佳实践。这将帮助你创建最好的 API,并使你的 API 用户使用起来更容易。 0.什么是 REST API?...1.REST API 设计建议 1.用名词表示资源 当你设计一个 REST API 时,你不应该在端点路径中使用动词。端点应该使用名词,表示它们各自的作用。...因此,GET 将检索资源,POST 将创建资源,PUT 将更新整个资源,DELETE 将删除资源,PATCH 更新资源的局部数据。 5.用过滤、排序和分页请求数据 有时,API 的数据库可能非常大。...如果发生这种情况,从这样的数据库中检索数据可能非常缓慢。 过滤、排序和分页都是可以在 REST API 的集合上执行的操作。这样只能检索、排序和排列必要的数据,并将其分页,以防服务器请求过载。...9.考虑特定资源搜索和跨资源搜索 提供对特定资源的搜索很容易。只需使用相应的资源集合URL,并将搜索字符串附加到查询参数中即可。 GET /employees?

    2.8K20

    面试官:你连RESTful都不知道我怎么敢要你?

    03 RESTful6大原则 REST之父Roy Fielding在论文中阐述REST架构的6大原则。 1. C-S架构 数据的存储在Server端,Client端只需使用就行。...3.统一的接口 这个才是REST架构的核心,统一的接口对于RESTful服务非常重要。客户端只需要关注实现接口就可以,接口的可读性加强,使用人员方便调用。...比如服务端可以返回一些 Javascript 代码让客户端执行,去实现某些特定的功能。提示:REST架构中的设计准则中,只有按需编码为可选项。...https://example.com/api/getallUsers GET 获取所有用户 https://example.com/api/getuser/1 GET 获取标识为1用户信息 https...在.net WebAPI总我们可以使用属性路由,属性路由就是讲路由附加到特定的控制器或操作方法上装饰Controll及其使用[Route]属性定义路由的方法称为属性路由。

    1.4K20
    领券