问题标签 [restful-architecture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
16618 浏览

json - RESTful GET 响应是否应该返回资源的 ID?

这里的一些开发人员正在就来自RESTful API的GET 请求是否应该返回所请求资源的 ID 进行友好的(有些人会说宗教性的)讨论。让我们假设以下 GET 请求:

http://my.api.com/rest/users/23

这当前返回:

请注意,结果集中缺少“id”。

基本上有 4 个阵营在与这个问题作斗争。

CAMP #1:当调用者发出 GET 请求时,他们已经知道 ID。因此,结果集不应包含ID。如果调用者需要此数据来启用 UI 编辑,则调用者需要通过 ID 23,也许手动将成员 {"id": 23} 添加到 JSON。
Camp #1 中的人们还争辩说,结果集中存在 ID 表明该值可以修改,当然不能。

CAMP #2:如果没有 ID,JSON 结果集就不能原生地用于 UI 表单中的编辑/更新操作。相反,AJAX 回调机制需要负责传递 ID 字段并将这些字段手动添加到结果集中。这似乎很笨拙且容易出错。UI 人员正在争论结果集“感觉”就像它缺少应该存在的数据,即 ID。

CAMP #3:这些人关心的是一致性。如果我们曾经有一个 API 返回的用户对象集合,这些对象必须包含 ID。因此,为了保持一致性,GET 的单例版本也应该包含 ID。

CAMP #4:这些人建议用户的 GET 请求可以返回包含 ID 的 HyperMedia 或 SelfLinks 形式的元数据。

这不是一个深奥的“谁是对的?” 论据,要么。我们采用的方法将决定我们 API 的形状,并影响几个开发人员在新几周内的工作量。

0 投票
1 回答
1862 浏览

java - 如何通过 HTTP get 获取音频文件?

我正在尝试通过 http get 从安全的 restful 服务获取音频文件,我已经成功接收和解析文本 XML 服务,但是对于如何处理音频文件有点困惑。

使用 XML 响应调用安全 restful 服务的代码

0 投票
2 回答
303 浏览

ruby-on-rails - 在 RESTful 服务中处理多个资源请求

我对如何处理传递多个资源的请求感到困惑。

我有以下层次结构。项目有可交付成果,可交付成果有文档。所以项目->可交付成果->文档。

对于特定于文档的自定义操作,比如说 change_status,我有诸如 /projects/1/deliverables/1/documents/1/change_status 之类的路由。至此一切都好。

但是,当我想在多个文档上更改状态时,最佳实践是什么?/projects/1/deliverables/1/documents/change_status (传递文档ID数组)似乎不是RESTFul,因为我的理解是在“文档”之后应该存在特定的ID。

/projects/1/deliverables/1/change_status (传递一组文档ID)并不能说服我有两个原因。首先,将调用我的可交付成果控制器(按照 Rails 中的约定),而且您似乎正在更改可交付成果而不是文档的状态。鉴于可以在文档中更改状态,我认为生成的 url 令人困惑,特别是如果您也可以将状态更改为可交付成果(您如何区分将状态更改为可交付成果或文档,在这种情况下 url 将是相同的) .

所以基本上我对如何处理在 RESTFul 中处理多个资源的请求感到困惑。非常感谢任何帮助/澄清!谢谢各位!

0 投票
0 回答
231 浏览

session - JAX-RS/Restfull - API 和会话管理

尽管 jax rs 休息服务强制每个请求创建一个新的资源实例,但在有限的时间内为我的休息 Web 服务保留会话信息是一个坏主意/坏习惯吗?

0 投票
2 回答
269 浏览

rest - RESTful - GET 或 POST - 怎么办?

我正在开发一个我想成为 RESTful 的 Web 服务。我知道 CRUD 做事的方式,但我有一些我不完全清楚的事情。所以是这样的:

我有一个跟踪服务,它在浏览器(客户端)中收集一些数据,然后将其发送到跟踪服务器。有两种情况,一种存在配置文件,另一种不存在。最后,服务返回一些必须注入 DOM 的元素。

所以基本上我需要2个网络服务:

  1. http://mydomain.tld/profiles/
  2. http://mydomain.tld/elements/

问题 1:现在我只使用 GET,但我重写了服务器以支持 CRUD。所以在这种情况下,如果配置文件不存在,我必须使用 POST。http://mydomain.tld/profiles/ 之类的东西,然后是 POST 有效负载具有要保存的信息。如果配置文件存在,我使用 PUT 和http://mydomain.tld/profiles/ / 并且 PUT 的有效负载有数据要保存。一切都很好,但问题是据我了解,xmlhttp 不支持 PUT。现在可以使用 POST 即使它是更新?

问题 2:如前所述,当制作轨道时,我的服务会返回一些要注入 DOM 的元素。从逻辑上讲,为了保持 RESTful,我想我必须使用 POST/PUT 来更新配置文件,然后 GET 来获取要注入的元素。但是为了节省服务器端的带宽和资源,将带有 POST/PUT 的元素返回到配置文件更有意义,即使它是不同的资源。你对此有何看法?

BR/太阳

编辑:

问题 3:在某些情况下,我只想更新配置文件而不接收回元素。我是否仍然可以使用相同的资源,然后使用有效负载参数来指定我是否想要元素,例如“dont_receive_elements:true”

0 投票
0 回答
58 浏览

rest - 服务器端数据库处理程序脚本

我们正在通过 Python 将数据从 Linux 设备推送到 cosm.com 上的 RESTful API。我们现在想在我们自己的服务器上实现数据处理和存储。特别是,HTTP PUT 方法用于推送到站点的 API。

我是 1 的研发人员,我在枪下。
感谢您的时间。

0 投票
2 回答
1967 浏览

spring - 宁静服务出错

致力于宁静的 Web 服务。调用 rest ful 服务时出现以下错误,但集成测试适用于相同的请求。

错误:严重:2012 年 7 月 15 日上午 8:59:10 org.apache.cxf.jaxrs.utils.JAXRSUtils readFromMessageBody 严重:将输入流反序列化为目标类 UserActivity 时出错,内容类型:/ 2012 年 7 月 15 日 8:59:10 AM org.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse 警告:WebApplicationException 已被捕获:由于输入结束,没有要映射到对象的内容

JsonInput 是:{"pageURL":"https://google.com,"activityType":"LOGIN","userGUID":"105"}

如果我用测试客户端尝试相同的输入,它正在工作......知道这里发生了什么,我错过了任何图书馆吗?

任何建议将不胜感激。

0 投票
1 回答
59 浏览

http - 哪种 HTTP 响应代码最适合这种情况?

我正在编写一个 API 以使用户可以订阅事物。用户可以通过提交如下内容订阅任何内容POST

在这里你可以看到一个sure参数。我正在使用它来避免意外订阅。如果客户端在没有sure参数的情况下发送该信息,API 拒绝该请求以使 GUI 询问“确定要订阅这个吗?”。如果用户确认,同样的帖子会再次出现sure参数。并且订阅(或取消订阅)发生。

因此,当我因为没有sure参数而拒绝该请求时。我应该使用哪个响应代码?我认为可以使用 400(错误请求),但不确定。

谢谢你的回复。

0 投票
1 回答
2005 浏览

api - 一个使用多个 RESTful API 的 Web 应用程序?

我正在构建一个需要与多个(两个或三个)现有 RESTful API 进行通信的 Web 应用程序。每个 API 提供不同的数据和功能。Web 应用程序本质上会将 API 粘合到一个用户界面中。

基于这种情况,我有几个问题:

  1. 这很常见吗?
  2. 这是不好的做法还是不好的架构?如果是这样,有哪些替代方案?
  3. (下图#1)我想使用 JavaScript + AJAX 与这些 API 进行交互。我会向不同的域发出 AJAX 请求,并使用不同的绝对 URL 来处理它们吗?例如,http://api1.domain.com/somethinghttp://api.domain.com/something_else
  4. (下图#2)我是否应该让我的后端控制器与这些 API 交互,然后让我的前端 (JavaScript) 与我的应用程序的控制器交互,而不是 (3)?本质上,这将是一个门面。

我正在研究 SOA,如果我听起来很无知,请原谅我。FWIW,我打算使用 Ruby on Rails。

图#1:

在此处输入图像描述

图#2:

在此处输入图像描述

0 投票
2 回答
1263 浏览

http - 为用户与其他实体交互构建 URL 的 RESTful 方式是什么?

我试图弄清楚为用户与其他实体交互构建 URL 的正确 RESTful 方式是什么?

例如,我有三个实体userspoststags

您如何表示“用户喜欢帖子”、“用户关注标签”或“用户关注用户”。

这是我的想法,但我不确定这是否是正确的方法:

POST /user/:id/like/post/:id(用户喜欢帖子)

POST /user/:id/follow/user/:id(用户关注另一个用户)

看起来很语义化,但我不确定 POST 方法