问题标签 [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.
spring - Hateoas java.lang.IllegalStateException:无法通过 RequestContextHolder 找到当前请求
我正在使用 Hateoas 功能来调用 Controller 的 post 方法 url。但是当我尝试使用 ControllerLinkBuilder 类的 linkTo 方法时,我遇到了异常,如下所述:
Java类:
控制器类
如果有人对此有所了解,我在这里做错了什么,请告诉我。提前致谢。
html - Sails.JS 和超媒体 HATEOAS 示例?
有没有人有任何使用 SailsJS 实现 HTML5 超媒体 (HATEOAS) API 的好例子,或者这甚至是一个好主意?如果没有,为什么不呢?
api - REST 动态 URI
REST 响应中的超链接是否可以包含对响应中不同属性的结果的引用?
例如,我正在尝试设计一个 API 响应,其中包含一个用于收集前六个月的语句的链接,但我希望此 URI 与原始 GET 请求中返回的语句的 start_date 相关。
cxf - CXF JAX-RS 服务 - HATEOAS
我希望将 HATEOAS 功能添加到现有的 Rest web 服务中。JAX-RS 正在使用 CXF,我们确实想改变它。我在网上看到了 SPRING-HATEOAS,用于实现 HATEOAS,但它不适用于 CXF 应用程序。对此的任何帮助都将受到高度赞赏。
api - 如何处理 RESTful API 中的敏感属性(例如密码、信用卡等)
使用将支持多种超媒体类型和身份验证的 REST 框架。我不确定如何处理的一件事是资源中的敏感值。例如,如果我要在 API 中包含用户管理,我需要一种方法向客户端公开密码字段,但不显示实际的密码哈希。信用卡也是一样。如果我不这样做,它将违反超媒体约束,因为这些领域的知识会变得带外,并使我的 HATEOAS 损坏。
这是我遇到的一个实际用例:
该项目是一个展示他们的人员目录,以便其他人可以雇用他们。有两种类型的用户:有个人资料的和没有个人资料的。围绕资源的设计将是/users/{userid}
针对用户的,/users/{userid}/profile
或者/profile/{profileid}
将包括一个返回用户的链接,以便客户端可以获得用户名等信息。此外,用户可以将信用卡存储在/users/{userid}/creditcards/{creditcardid}
.
要显示用户的个人资料,您还需要用户资源来访问名称等。我们不希望在用户资源或信用卡链接上公开用户密码。我想我可以毫无问题地隐藏信用卡链接,但我不确定密码字段。我应该只为授权用户公开它,而不是在其他用户模型上公开吗?我应该提到,GET
除非经过身份验证和授权,否则仅允许用户使用。
一个强调这一点的奇怪边缘情况是您可以部分访问更改的对象。假设您是低级别管理员,有权更改用户的姓名和地址,但不能更改密码。由于您无权访问,因此无法公开密码字段。如何PUT
对我没有所有字段的资源执行操作?我应该只PATCH
在这些情况下使用吗?
TL;DR:如何正确隐藏/公开 REST API 中的字段并遵循超媒体约束?
java - Resteasy @LinkResource 约束 ExpressionLanguage PropertyNotFoundException
我正在使用 resteasy-links (2.3.7.Final) 通过 HATEOAS 链接增强我的资源。
当使用 @LinkResource 的约束来限制其基于属性的创建时,BeanELResolver 在传入类型时失败并出现 PropertyNotFoundException。问题是resteasy-links 的 RESTUtils 要么传入实体,要么传入实体ResourceFacade 实体的类型。由于实体的类显然不具有与实体本身相同的属性,因此这注定会失败。
我想要做的是仅在实体没有 endTime 时才显示链接,这对于直接用例非常有效,但是一旦使用 ResourceFacade,只有实体的类型(DTO.class)被传递到EL上下文。
@LinkResource(value = DTO.class, constraint = "${endTime == null}")
我试过了
"${!(this instanceof java.lang.Class) && endTime == null}"
"${this.getClass() == 'DTO' && endTime == null}"
"${!this.toString().contains('class') && endTime == null}"
但是 1. 甚至没有编译,第二个失败,因为 Class 没有 getClass()。3. 有效,但对我来说似乎相当 hacky。
有更好的想法吗?
json - Resteasy Atom 与 Jackson 而不是 Jettison 联系
由于其他要求,我们需要使用 Jackson 进行 JSON 序列化。不幸的是,如文档中所述,Jackson 不支持带有 RESTServiceDiscovery 的 Atom 链接。有没有人已经为此建立了解决方法?或者知道为什么它不能与杰克逊一起工作以及如何解决它?
我们当前的方法是使用 XML 作为输出,然后使用 javascript 库将 XML 转换为 JSON。
java - Spring HATEOAS 与 Spring Data Rest
问题是,Spring HATEOAS 与 Spring Data Rest 有什么区别?
我觉得两者都可以做同样的事情,而且 Spring Data Rest(作为 Spring Data 的一部分)似乎更有活力。
https://github.com/spring-projects/spring-hateoas https://github.com/spring-projects/spring-data-rest
您什么时候使用其中一种?
oop - SOA 是否可以应用 HATEOAS 原则?
这个问题是理论上的。我发现面向资源架构和面向服务架构的区别类似于面向对象编程和过程编程的区别。通过面向资源的架构,服务(命名空间)发布资源(对象),我可以在这些资源(对象)上调用方法(方法)。通过面向服务的架构,服务(命名空间)发布我可以调用的操作(函数)。
由于 HATEOAS 原则,通过面向资源的架构,我可以编写一个自生成客户端。我只需要发回包含链接资源的 url 的数据。面向服务的架构是否可以使用类似的方法?如果不是,那么它是否取决于与过程编程的类比,还是其他原因?
rest - RESTful 主/详细信息
在 Web 应用程序中有 3 个下拉选择器。Web 应用程序使用 Restful 服务来填充选择器数据。
两个第一选择器从类似的东西中获取值/years
和/colors
。第三个应该根据两者的设置来获取其值。
所以它可能是这样的/models?year=1&color=red
。
问题是,如何使这个 HATEOAS 兼容(这样开发人员就不必知道他应该如何创建一个 url 来获取模型)。
root/
为我提供了许多链接,例如:
应该用什么代替???
?如果有某种模板/models?color={color}&year={year}
,则开发人员必须创建 url。这个可以吗?
或者可能有一个链接指向每种颜色的年份列表,/colors
然后链接到每个年份的模型列表/years?color=red
,但我必须先选择颜色,然后填充年份,然后填充模型。如果我想让模型依赖于颜色和年份,而不仅仅是颜色填充的年份,知道吗?
在这种情况下甚至有可能使其符合仇恨标准吗?