【问题标题】:What exactly is a Rest API [duplicate]什么是 Rest API [重复]
【发布时间】:2017-05-13 13:53:04
【问题描述】:

什么是 Rest API,为什么要使用它,我该如何创建和了解更多信息?所有函数都应该是 GET/POST/DELETE/PUT 形式?

【问题讨论】:

标签: rest api


【解决方案1】:

简单地说,REST API 定义了一组函数,开发人员可以通过这些函数执行请求并通过 HTTP 协议(​​例如 GET 和 POST)接收响应。 REST API 应该指定它可以提供什么以及如何使用它,详细信息,例如查询参数、响应格式、请求限制、公共使用/API 密钥、方法 (GET/POST/PUT/DELETE)、语言支持、回调用法、 HTTPS 支持和资源表示应该是自描述的……

【讨论】:

    【解决方案2】:

    REST 是一种高度可扩展且可缓存的架构,非常适合设计 API。 REST 背后的基本思想 -

    1. URL 和标头应该唯一标识资源,以便可以缓存。

    2. REST API 应该是无状态的,即 API 调用的结果不应因之前的 API 调用而异。跨 API 保持状态会限制缓存,因此不被视为 RESTful。

    3. 使用适当的 HTTP 动词,即 GET 用于读取和幂等请求,POST 用于写入请求,PUT 用于写入和幂等请求,DELETE 用于删除资源。

    4. 返回符合 REST 标准的适当状态代码,以便在不同代理层上轻松使用和通用缓存。

    5. HATEOAS 即超媒体作为应用程序状态的引擎,它声明大多数 URL 不应该被硬编码,而是服务器端应该通过在其响应中提供 URL 来引导客户端。这个想法非常类似于我们在浏览器上使用网站的方式。

    【讨论】:

    • 更正:1) 仅使用 URI 来标识资源。资源可以是任何东西,例如我,或“幸福”。一个 URI 加上请求头,当通过 HTTP 使用时,选择一个“资源的表示”——一个数字字节流,比如我喜欢的 JPEG 图像。 3&4) 如果使用 HTTP 作为您的应用程序协议,除了满足通用接口约束之外,这些对于 REST 不是必需的。可以选择与您描述的接口不同的其他接口。例如,HTML 只使用 GET 和 POST,但接口是共享的,因此满足 REST。
    • 我有点同意你的第一个提议,标题“应该”主要用于不同的表示。
    • 我有点同意你的第一个提议,即标题“应该”主要用于不同的表示。但是很多时候标头用于版本控制。同样,很多人倾向于使用 url 进行版本控制。仍然不能认为这些 api 的“不安”。其次,就正确动词而言,建议使用正确动词。此外,大多数使用 Restful url(如 Ruby on Rails 所做的)的网页并不是真正的“RESTful”,因为它们不是无状态的(会话)。最后,REST 仅在 HTTP 协议的上下文中有效。你不能将 REST 与 SOAP 一起使用。
    • 关于你的最后一句话,我必须不同意。 REST 与 HTTP 无关,只是它是 REST 架构风格 原则的灵感来源。可以为 HTTP 以外的应用程序创建 RESTful 架构。您的评论回复的其余部分是在谈论 REST 是如何被滥用的,就好像它应该是这样,而不是正如您在答案的开头所说的那样,“基本思想是什么”。最后,您说“使用正确的动词”,但 REST 没有定义这些是什么。正如我所说,HTML 是宁静的,并且只使用 GET 和 POST——这些都是正确的。
    • 2017 年 11 月 17 日投反对票。您的第二点具有误导性。请删除此答案或将其设为社区维基
    【解决方案3】:

    REST 是当今非常流行的开发架构,是一种在两个非常不同的组件之间进行通信的方法,通常用于 Web 服务的开发。此外,REST 没有利用太多带宽,这使得它更适合在网络上使用。这使得 REST 更适合 SOAP,因为与 SOAP 不同,您不必创建服务器和客户端。如果是 SOAP,您必须分别创建一个服务器程序来提供数据和一个客户端程序来请求数据。

    详细知识库可以在http://srijan.net/blog/rest-api-and-its-utility-real-web-applications找到

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2016-12-07
      • 1970-01-01
      • 2011-03-13
      相关资源
      最近更新 更多