REST 请求通常是 JSON 输出还是其他什么?

Ber*_*own 8 javascript java rest

像 Java 的 jax-rs 一样的完整 REST api 包含用于定义资源路径的定义,使用完整的 GET、POST、PUT 请求。

但通常当我遇到 REST API 时,它通常是一个标准的 HTTP GET 请求,响应是一个 JSON 输出。看起来真实世界的 REST 请求的核心是使用 JSON 输出,但 REST 的真正定义允许 XML、JSON 或其他输出类型。

例如,twitter API 具有“JSON”输出,它们使用 GET 请求,以下是一些 URL:

https://dev.twitter.com/docs/api/1.1/get/search/tweets

您仍然可以使用“GET”参数来修改请求。似乎 twitter 的“搜索/推文”功能只是一个简单的 http 请求,带有一个定义明确的 URI 路径,恰好返回一个 JSON 响应。那真的是REST吗?

什么是 REST api?

在 Jax-rs http://en.wikipedia.org/wiki/Java_API_for_RESTful_Web_Services

(对不起,如果这有点主观或轶事,但我相信开发人员对此感到疑惑)

Dar*_*wyn 7

REST(表述性状态传输)是一种模糊的架构设计模式,最初由 Roy Fieldings(又名 HTTP 的创建者)在一篇论文中提出。

大多数时候(99% 的时间),当有人想要 REST API 时,他们的意思是他们想要一个 Web API,在其中发送包含 HTTP 动词和 URL 的请求,该 URL 描述了将由该资源执行操作的资源的位置。 HTTP 动词。然后,Web 服务器对资源执行请求的动词,并将响应发送回用户。响应通常(取决于所使用的 HTTP 动词)包含结果Resource的表示。资源可以表示为 HTML、JSON、XML 或许多其他不同的mime 类型

响应中使用哪种表示形式并不能真正表明 API 是否是 RESTful;它是指接口的 URL 的结构如何以及如何使用 HTTP 动词定义 Web 服务器的行为。正确兼容的 REST API 应使用 GET 动词仅读取资源、使用 POST 动词修改资源、使用 PUT 添加/替换资源以及使用 DELETE 删除资源。HTTP 规范中列出了预期动词行为的更正式定义。


Mat*_*att 5

REST(简而言之)是一种范式,资源应该可以通过 URI 访问,并且可以使用类似 HTTP 的动词来操作它们(也就是说,HTTP 的设计考虑了 REST 原则)。也就是说,这与为您的应用程序设置一个 URI 并发布数据负载以告诉服务器您想要实现的目标形成对比。

粗略地类比,文件系统通常是 RESTful。不同的资源位于易于访问和写入的不同地址(目录),尽管不一定以反映路径的方式存储在磁盘上。另外,很多数据库是不是REST风格-你通过声明API连接到数据库和访问数据,而不是通过一个位置查找数据。

至于资源是什么——HTML、JSON、滑水松鼠的视频——这是一个不同于遵循 RESTful 原则的抽象级别。