RESTful API 应该有架构吗?

2024-04-30

最近有人告诉我,一个合适的 RESTful API 应该为其接受和返回的资源表示定义一个模式。例如,用于 XML 的 XSD 和用于 JSON 的 JSON 架构。

然而,在我读过的所有关于 REST 的书籍和文章中,这一点似乎不仅没有突出,甚至没有被提及。

有人可以提供一些权威资源,以澄清我们在开发 RESTful API 时是否应该提供架构吗?


您必须定义请求和响应接口并将其传达给 RESTful APIsomehow以便呼叫者知道您对请求的期望以及他们对响应的期望。

RESTful API:架构与其他接口定义

无论您使用schema(XSD、JSON 架构等),或一些other形式(自然语言、示例等)或定义界面的某种组合由您决定。这里有一些factors告知您的决定:

  • 您将使用的约定的知名度如何。

    Schema:XSD 是跨多个行业使用的 W3C 标准; JSON Schema 是众所周知的 JSON XSD 替代方案。

    Other:自然语言和示例是可行的并且非常有帮助,尽管通常是模棱两可或不完整的。

  • 您的社区最欣赏哪个大会。

    Schema:XSD 特别容易受到那些已经投资为其行业开发标准 XSD 的社区的赞赏。

    Other:自然语言和例子往往会受到新手的青睐。

  • 您将使用的验证过程的自动化程度如何。

    Schema:XSD 和 JSON Schema 都提供现成的自动验证。

    Other:自然语言和示例需要临时的验证工作。

  • 您将使用的界面的类型有多紧或松。

    Schema:XSD 和 JSON 可以表达一系列类型特异性,但在需要详细类型特异性时表现出色。

    Other:自然语言和示例可以传达类型要求,尽管通常不精确。

其他 RESTful API 注意事项

最后,请注意,您将需要做出进一步的决定超越模式与非模式:

  • 随着时间的推移,您将如何对接口进行版本控制。
  • 什么是HTTP URL结构、方法、响应代码等 你会用的。
  • 是否在使用时管理所有这些注意事项Swagger http://swagger.io/, RAML http://raml.org/, Apiary https://apiary.io/, Apigee http://apigee.com/about/,或其他API框架。

除了模式与其他接口定义决策之外,这些都是 REST API 与服务调用者通信的重要部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RESTful API 应该有架构吗? 的相关文章

  • 重命名猫鼬中的字段[重复]

    这个问题在这里已经有答案了 我有两个 JSON 对象 每个对象都有一个名字字段 我想将名字重命名为名称 还想使用猫鼬将现有的名字值导入到名称 Schema const mongoose require mongoose const Sche
  • 从 WCF REST 获取错误详细信息

    我有一个由 Net WCF 客户端使用的 REST 服务 遇到错误时 REST 服务会返回 HTTP 400 错误请求 响应正文包含 JSON 序列化详细信息 如果我使用 Fiddler Javascript 或直接从 C 执行请求 我可以
  • 放心 + 模拟 MVC @ControllerAdvice

    在我的项目中 我使用 Rest Assured MockMVC 并具有以下依赖项
  • 使用 C++ REST SDK Casablanca 发送 HTTP POST 请求以更新文件内容

    我正在尝试使用 C Rest sdk 更新 alfresco 服务器中的文件内容 我正在使用 alfresco CMIS url 发送请求 更具体地说 它是 Alfresco CMIS 浏览器绑定 我必须坚持浏览器绑定而不是原子绑定 当我发
  • 将 REST 服务与 Android 应用程序同步

    我使用一个 REST 服务来填充数据库中的信息 稍后由我的应用程序使用 我已经阅读了有关此事的多个主题 现在必须决定如何在 REST 服务和数据库之间实现同步 想象一个应用程序 它从谷歌金融 API 获取有关股票的信息并将其存储在数据库中
  • 为 Rest Web 服务创建 WCF 代理

    我有一个复杂的 WCF Rest 服务 它需要多个输入和对象 我不能简单地通过在 Fiddler 中执行 HTTP POST 来调用它 因为要提供的数据太多 我可以 但这将花费我很长时间 所以我想使用代理在代码中完成它 有没有办法为 NET
  • django-rest-swagger 与模型序列化器不能很好地配合吗?

    我已经离开了 django rest swagger 的文档github页面 https github com marcgibbons django rest swagger 更具体地说 是 它是如何工作的 部分 它表明您可以为其余 api
  • 如何在 .NET 中自定义 JSON 枚举的反序列化?

    我有以下示例 C 代码 它是使用 svcutil exe 应用程序从 xsd 自动生成的 DataContract public enum Foo EnumMember Value bar Bar 1 EnumMember Value ba
  • Rest 和 Http 中“无状态”的含义

    当我阅读有关 REST 是什么的文档时 他们总是说 REST api 应该是无状态的 在这里 我感觉有点尴尬 因为普通的 HTTP 也是无状态的 既然REST可以说是一种使用HTTP协议的特殊架构 那么说REST应该是无状态的似乎是多余的
  • VSTS 使用 API 在队列时设置构建参数

    我需要对来自 REST API 的 VSTS 构建进行排队 记录于https learn microsoft com en us rest api vsts build builds queue view vsts rest 4 1 htt
  • Spring boot 404错误自定义错误响应ReST

    我正在使用 Spring boot 来托管 REST API 即使浏览器正在访问 URL 以及自定义数据结构 我也希望始终发送 JSON 响应 而不是使用标准错误响应 我可以使用 ControllerAdvice 和 ExceptionHa
  • 如何让 Swagger UI 的参数成为下拉菜单而不是文本输入

    我正在使用 swagger 来显示我的 RESTApi API 的一个参数将字符串作为输入并将其转换为枚举值 有没有办法在 Swagger UI 上显示下拉菜单而不是文本输入字段 以便用户只能选择枚举值中的字符串值 您可以使用以下 swag
  • Extjs Restful Store,批量发送请求?

    我创建了一个带有商店配置的网格组件 如下所示 Create the store config store new Ext data Store restful true autoSave false batch true writer ne
  • Magento2:REST API:保存每个商店视图的产品详细信息不起作用

    使用Magento2 1 0 rc1分支 有样本数据 使用 REST API 目录ProductRepositoryV1 REF http devdocs magento com swagger index html http devdoc
  • RESTful API:我应该在哪里编码我的工作流程?

    我正在开发一个 RESTful API 这是我的第一个 API 也是我的第一个真正大型的编码项目 因此 我仍在学习很多关于建筑等方面的知识 目前 我的 api 设置分为以下几层 HTTP层 资源层 领域模型 业务逻辑层 数据访问 存储层 持
  • 实体创建无用的 id 字段

    我有一个CrudRepository与两个实体 Problem 特征实体总是创建一个附加的id数据库中的字段但未选择正确的characteristic id要生成的字段JSON machine entity machine id name
  • REST API 路由最佳实践

    我想知道当订单是一种资源时 为以下场景创建 REST API 的最佳实践是什么 获取数据库中的所有订单 当然不是实际场景 仅供理解 通过订单ID获取订单 根据订单ID获取单个订单 单个 GET 路由是否可以用于所有这些场景 或者我们应该针对
  • 在 PHP 中使用 file_get_contents 进行 PUT 请求的错误请求

    这个 api 调用使用 Postman REST 客户端 可以正常工作 但是当我的 GAE 应用程序中的服务器上发出请求时 我当前收到以下错误 HTTP 请求失败 在 C Projects app file php 第 26 行 打开流失败
  • 不同 servlet-api 版本冲突

    我正在使用 Maven 和 Jetty 作为服务器来开发 RestEasy Web 服务 其中一项服务应使用扩展 javax servlet http HttpServletResponseWrapper 的 Filter 问题出在来自 s
  • 有人可以用简单的术语解释“超文本作为应用程序状态的引擎”

    这似乎是我最难理解的 REST 原则 我知道 在设计 REST API 时 大部分精力应该花在为应用程序设计 描述超文本上 对于这个原理的现实世界应用有什么指示吗 原子协议如何应用这个原理 有人可以简单地解释一下如何将其应用到假设的购物车

随机推荐