问题标签 [hypermedia]

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 投票
1 回答
153 浏览

api - 解析 API 自己的超媒体链接

假设我们有一个 RESTful API 方法:

您可以看到它address具有指向另一个资源的链接。

要解决该address_id资源的问题,服务器应该:

  1. 分解 URL 并识别路由的“id”部分

  2. 甚至向自己发出 curl 请求,以获取该address_id链接资源的?

0 投票
1 回答
172 浏览

api - RESTful API 设计:接受唯一标识符而不是资源 URI 是否合理?

允许 RESTful API 接受带有指向另一个资源的隐式链接的表示是否有缺点?

为了说明这一点,假设我有两个资源:

一个人除了 之外还有一个唯一标识符id,即他们的email

允许以下交互是否有缺点?

服务器知道电子邮件字段是唯一的,因此可用于标识people资源。它将创建与该人的关联。

允许这样做的原因是为了让 API 客户端更容易,他们不必先查找资源的 URI。

相反,我当然会允许这种类型的调用:

0 投票
2 回答
98 浏览

json - 如果我得到该集合的一项,那么集合响应的 href 应该是什么?

我使用 GET 方法通过 http 请求获取特定的 Web 资源。

我已经实现了服务器以使用超媒体类型 collection+json 进行响应,因此每个响应都是根据规范 ( http://amundsen.com/media-types/collection/format/#query-templates )的项目集合

既然客户在请求一个特定的项目,那么集合的href的内容应该是什么?

我认为它应该是单个项目的相同 url,但我不确定。

0 投票
1 回答
960 浏览

web-services - Restful Service 和 Generic Media Type Payload 并保持 HATEOAS

请原谅我,因为我对这个 RESTFUL 的东西还是新手,我一直在阅读博客等......而且他们都有不同的实现/指南,唯一真正的指南是指定超媒体是什么的 Richardson 成熟度模型。

我知道超媒体设计的好处是具有通过根 URL 驱动机器/用户交互的注释链接,并且它将像链接更改时一样可以进化,使用幂等/安全的 http 动词等增强缓存......

我正在尝试设计一个 RESTFUL API Web 服务,并且我计划使用通用媒体类型,例如 HAL 或 Collection+Json 或警报器等......或者可能创建我自己的媒体类型,我认为我不想进入正确的现在...

使用通用媒体类型,我将有一个有效负载、一个数据结构或 DTO 对象,无论你怎么称呼它,比如“具有许多申请人模型和许多地址的应用程序模型等......”

1)我必须在某处指定数据结构定义吗?或某种形式的模板?我已经看到了一些示例,他们将这些数据的定义以人类可读的格式放置在“someurl/doc”中?或者我们应该使用类似 json 模式的东西吗?

2)我见过的一些例子用来自 vcard/foaf 等的链接中的类型修饰了他们的数据项......例如。“名称”:“ http://xmlns.com/foaf/0.1/name ”。这意味着什么?我看到的一些示例像引用了它们的 someurl/doc#name 来描述名称对象等...

3)这是否意味着如果Application Model的payload发生变化,合约的解释器也会发生变化?因此所有客户端都像以前一样中断,就像在 SOAP 中一样?

4)另一种选择,我认为我可以有一个可进化的项目结构,比如具有名称、值、提示的集合+json项目对象,它形成了实际的结构,这样在使用它的客户端上就会有最小的合同变化。

请就我应该如何设计我的对象提出建议,基本上说我有一个应用程序对象,其中包含多个具有多个地址的申请人以简化问题。

乔什

0 投票
2 回答
942 浏览

rest - REST 超媒体 API - 从无状态客户端导航

一个直截了当的问题:如果我正在构建一个无状态客户端,它在请求之间“更改页面”,我如何正确使用超媒体 API?

当然,关键点是客户端不应该构造 URL。例如,如果我们要获取某种类型的集合(比如说水果),每个集合条目都将具有一个 URL,以链接到 API 中的单个水果资源。伟大的。

然而,在我的客户中,在展示水果列表后,我希望将列表链接到另一个包含水果详细信息的前端页面。这样的详细信息页面当然应该是可收藏的,等等。前端 URL 的精确结构是我意识到的,从哲学上讲,很少关注 - 但它对下面的问题具有实际意义。

那么问题是,在加载水果详细信息页面时,没有当前上下文的客户端如何决定要获取的 API URL?

现在是什么:o?

最初想到的一个解决方案是在集合响应中有一个“项目”URL 模板,并使用其中的命名参数来构造页面 URL。然后详细信息页面将查询 API 以恢复相同的“项目”URL 并植入它传递的参数。这似乎并不理想,但它确实实现了所需的解耦。

提前致谢。

0 投票
1 回答
216 浏览

rest - REST/HATEOAS:模板化restul链接是一种可接受的方法

我正在为我们正在寻求开发的 API 调查整个 Layer3/HATEOS/RESTful/HAL。

我们将公开可能被所有这些链接膨胀的数据列表。将链接模板化不是一个想法,这会被称为什么?我似乎找不到任何提及它,如果这不是一个好方法,为什么?

以一个假设的假期搜索 API 为例,入口点可以提供目的地和出发机场的列表,允许用户使用其中一个开始搜索。

像下面这样的方法会是更有效的方法吗?(松散地基于 HAL)如果不是,为什么?

}

0 投票
2 回答
727 浏览

api - 超媒体 API 链路遍历与实用性

我一直在尝试构建一个基于超媒体的 API。事情似乎运作良好。说当我取/books/isbn/12313441213东西时,我得到了这样的东西:

现在我可以从这个资源中遍历作者。当我获取时,/books/by/author/id/18我得到这样的东西:

这对我来说似乎也很好。无论这种 uri 模板方式是否良好,我的问题是遍历这样的链接有多实用?

考虑到您想要完整的资源(包括作者详细信息),您必须至少对服务器进行 3 次调用。同样对于集合,您必须对服务器进行大量调用。是的,也许我可以在这里利用资源扩展,但是我为什么要使用超媒体链接,因为我所有的客户都会及时使用扩展资源。

我知道通过让客户端遍历链接,我们获得了很多收益(即,如果客户端构建基于关系的资源发现,当我们更改 api 时,它们受到的影响最小,或者它们被迫从资源端点本身获取最新的模式, ETC)。再说一次,这种方法的实用性或这种方法的性能会扼杀系统。

要么我在超媒体 api 设计中没有得到任何东西,要么超媒体 api 听起来不错,但似乎这只是一个理论上的想法,而不是实际的想法。

对此有什么想法吗?

0 投票
1 回答
97 浏览

rest - 使用唯一字段引用资源的 RESTFul 方式

我们的 REST 接口的要求之一是每个资源都可以通过唯一字段(除了主要标识符)来识别。这样做的原因是我们希望能够处理批量导入数据——在这种情况下,客户端无法知道系统生成的主要标识符。

这意味着我们必须能够通过独特的字段来引用我们的资源。使用主键,我们的读取请求如下所示:

并获得与该客户相关的订单

现在,让我们假设 customer 中的两个字段唯一标识它,name ("foo") 和 businessId ("bar")。鉴于此,我想出了以下 URI 来获取该客户的订单:

但我不喜欢我有不同的路径来识别这是通过唯一字段访问的资源。您将如何使用唯一字段而不是主键以 RESTful 方式构建上述查询?

此外,订单如下所示:

允许客户端在与接口通信时可互换地指定 href键有什么问题吗?

0 投票
0 回答
484 浏览

html - Sails.JS 和超媒体 HATEOAS 示例?

有没有人有任何使用 SailsJS 实现 HTML5 超媒体 (HATEOAS) API 的好例子,或者这甚至是一个好主意?如果没有,为什么不呢?

0 投票
1 回答
1244 浏览

json - 嵌套集合+JSON 超媒体类型示例

Collection+JSON的示例不显示嵌套集合的示例。任何人都可以指出使用嵌套集合的 Collection+JSON 示例或描述他们成功的经验。

例如,这是否适用于链接到两个子集合的顶级入口点: