问题标签 [hateoas]
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.
rest - 如何为 RESTful Web 服务创建自定义媒体类型(应用程序/vnd)?
我现在正在使用 REST,并认为我正确实施HATEOAS只是为了让所有概念都正确。
为此,我想创建自己的媒体类型(application/vnd[...]+xml
和application/vnd[...]+json
)。
第一个问题:媒体类型是否定义了我的服务器和客户端之间的合同?
媒体类型将定义我的消息格式,因此我需要添加 XML 模式和 JSON 模式以配合新的媒体类型(以便 REST 客户端知道消息中的内容以及发送回的内容)。
我在网上做了一些研究,但是缺少有关如何做到这一点的详细信息。它是否只涉及编写详尽的规范/文档,还是有一些技术步骤可以实施?(我不需要向 IANA 注册,对吗?)
如何application/vnd
创建一个新的 - 功能齐全的 - 媒体类型?以及您需要注意什么才能让客户正确使用它?
java - HATEOAS 和 API 的动态发现
HATEOAS 原则“客户端仅通过服务器在超媒体内动态识别的动作进行状态转换”
现在我对动态这个词有疑问,尽管我猜它是那里最重要的一个词。
如果我在 API 中将我的参数之一从说可选更改为强制,我必须修复我的客户端,否则请求将失败。
简而言之,HATEOAS 所做的只是给予服务器端开发人员极大的自由来随意更改 API,代价是所有客户端都使用他/她的 API。
我这样说是对的,还是我错过了诸如版本控制之类的东西,或者可能是服务器必须采用的 JSON 以外的其他媒体类型?
javascript - 多个单页应用程序或单页应用程序
我正在编写一个(几乎)“向导”基于网络的项目。基本架构是一个由 Web 客户端使用的 Restful 服务,旨在遵循 HATOAS 方法。由于不是一个轻量级的项目,我正在考虑将项目拆分为三个不同的 SinglePageApplications。对你们来说,这是个好主意吗?如果是这样,在页面之间传递参数的最佳方法是什么?例如。一个页面管理一个“资源A”,你做一些基本的CRUD操作,然后选择其中一个进行下一步:例如。analisys 基于与“资源 A”相关的对象,因此您应该至少传递“资源 A”ID 以及其他一些参数。谢谢,
rest - RESTFul HATEOAS API 中的 HTTP POST 请求
我正在编写一个 RESTful HATEOAS API。我有复合实体,我必须 GET、POST 和 PUT。GET 部分很简单,并且有很多示例。响应包含实体的原始属性和嵌套实体的链接。例如:
当我想创建或修改帐户时会出现问题。我需要将帐户与 accountType 相关联。我可以发送一个 POST 请求,如下所示:{"firstName":"Michael","lastName":"Jackson","balance":300.0,"accountTypeId":5}
但这会破坏 HATEOAS 范式。POST/PUT 复合实体的最佳实践是什么?
java - Jersey - 声明式超链接 - 在代码配置中
嗨,我正在阅读泽西入门指南。
在第 6 章中,他们使用 @Ref 注解来注入资源的 URI。我已经按照示例进行操作,但我的 uri 始终为空。
如何以编程方式添加com.sun.jersey.server.linking.LinkFilter
到?com.sun.jersey.spi.container.ContainerResponseFilters
我已经看过很多使用 web.xml 的示例。
谢谢!
symfony - yaml 中的 FSCHateoasBundle 配置
我正在尝试使用 FSCHateoasBundle 将链接添加到我的 API 输出。
文档提到了使用注释或 yaml 配置关系的可能性,但我无法弄清楚 yaml 配置的放置位置以及它的结构。作为记录的注释工作正常。有人举个例子吗?
我尝试做的是在 JMSSerializer 使用的配置文件中添加一个“关系”部分。我必须为 FSCHateoasBundle 使用单独的配置文件吗?
rest - 使用超媒体链接时如何处理对 REST 资源的更新
我正在使用一个 REST-ful API,其中的资源是相互关联的。资源相互引用,这些引用可能被创建或删除。当它们使用超链接相互引用时,我有点不确定如何支持将资源关联在一起。
下面是一个简单的示例,其中包含两个资源 A 和 B。
现在,A 的文档中不包含 B,而是指向它的链接。使用超媒体时,它可能看起来像这样:
如果用户想在 A 的列表中添加或删除 B 引用之一,考虑到超链接的存在,他们如何做到这一点?我希望用户能够在一次 PUT 操作中更新整个 A 资源,但输出中没有任何内容表明 B 需要哪个值。用户使用以下内容执行 PUT 对我来说很有意义:
并像这样接收更新的资源(在响应中):
我担心的是,用户在更新资源 A's 时不一定知道要在资源中包含什么list_b
。
在处理从一个资源到另一个资源的超链接时,创建和更新应该如何工作?是否应该允许客户端更新链接的一部分 (the id
),还是应该要求他们更新链接的两个部分?
注意:我知道另一种方法可能是公开资源 A 的子 URL。它可以公开list_b
为可通过 HTTP 操作的资源(允许客户端在列表资源本身上使用 POST、PUT 和 DELETE)。但是当 A 包含对其他资源类型的多个引用时,这似乎不太合理。引用另一个字段的每个字段都可能需要一个子 url,如果有 10 个以上的字段,则该子 url 很笨拙,并且需要多个 HTTP 请求来更新资源。
.net - 带有 .NET 超媒体框架的 REST
想要开始一个 Web API 项目并想知道(两个?)框架中的哪一个可以让我在Richardson 成熟度模型中以最少的摩擦走得更远。
也许是一个 HOWTO 的链接?
rest - 一个支持 HATEOAS 的 EmberJS 数据存储适配器
我正在创建一个应用程序,我真的希望它遵循HATEOAS REST 要求,非常 RESTful。在前端,我正在考虑使用 Ember,因为它似乎与我喜欢构建前端应用程序的方式非常一致。不幸的是,内置的 REST 数据源适配器似乎不理解如何导航遵循 HATEOAS 的 API - 我必须根据 ID 指定数据,而不是通过 URL。
Google 没有帮助我 -有人知道支持 HATEOAS的数据适配器吗?如果没有,我会尝试建造一个,但我不想浪费时间!
json - REST HATEOAS:如何在浏览链接时确定和设置媒体类型?
我正在经历被描述为一个好的 REST API的例子。GET 是在基本 URI 上发送的,并且带有客户端已经知道的媒体类型(这很好,根据 REST 原则)。
但我陷入困境的是客户端如何为后续请求设置媒体类型。我知道客户端从上一个响应中获得了下一个请求的 URI。但是它是从哪里获得媒体类型的呢?如果它是客户端的先验知识,那么客户端通常如何维护这样的 URI:media-type 映射?看来我肯定在这里错过了一些基本知识。以下是使用媒体类型发送的后续请求:application/vnd.com.sun.cloud.Vdc+json!
我已经看到其他示例,其中媒体类型也是响应中链接的一部分,例如以下响应,我可以理解。