Questions tagged «hateoas»

4
REST API-是否有DTO?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 4年前关闭。 改善这个问题 我目前正在为一个项目创建REST-API,并且一直在阅读有关最佳实践的文章。许多人似乎反对DTO并只是公开域模型,而其他人似乎认为DTO(或用户模型或任何您想称呼的东西)是不好的做法。我个人认为这篇文章很有道理。 但是,我还了解了所有其他映射代码,域模型可能与其DTO对应对象100%相同的DTO的缺点。 我们的API主要是为了使其他客户端可以使用数据而创建的,但是,如果操作正确,我们还将尽可能地将其用于我们自己的Web GUI。 问题是我们可能不想将所有域数据公开给其他客户端用户。许多数据仅在我们自己的Web应用程序中才有意义。另外,我们可能不希望在所有情况下都公开有关某个对象的所有数据,尤其是与其他对象的关系等等。例如,如果我们公开一个特定对象的列表,则我们不一定要公开整个对象层次结构。这样就不会暴露对象的子对象,而是可以通过链接(阴影)来发现它。 我应该如何解决这个问题?我正在考虑在我们的域模型上使用Jackson混合来控制在不同情况下将公开哪些数据。还是考虑到DTO的缺点和争议,我们是否应该一路使用DTO?
154 java  spring  rest  dto  hateoas 

5
HATEOAS(REST体系结构)的实际示例
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 正如每个人都可能注意到的那样,在野外有很多伪造的/基本的REST-API(它们实现了HTTP-API并称为REST,而没有遵循应用程序状态的超文本作为引擎的要求,这导致了向最先指定REST范例的人Roy T. 我一直找不到真正的超文本驱动的REST实现以及状态转换相关的特定于应用程序的媒体类型定义的任何实际示例。 是否有此类实施的可公开访问的示例?
140 api  rest  hateoas 

5
REST HATEOAS(成熟度级别3)多么有用/重要?
我正在参与一个项目,其中一些高级团队成员认为REST API必须符合HATEOAS并实现所有Richardson的成熟度级别(http://martinfowler.com/articles/richardsonMaturityModel.html)! AFAIK大多数REST实施都不符合HATEOAS,因此应该有一个充分的理由说明为什么更多的人不这样做。我可以想到诸如增加复杂性,缺乏框架(服务器和客户端),性能问题以及...等原因。 你怎么看?您在现实项目中对HATEOAS有任何经验吗?
110 rest  hateoas 

9
REST API真的是RPC吗?罗伊·菲尔丁(Roy Fielding)似乎这么认为
我以为我对REST了解的很多知识显然是错误的-而且我并不孤单。这个问题的引入时间很长,但是由于信息有点分散,因此似乎很有必要。如果您已经熟悉此主题,那么实际问题就在最后。 从Roy Fielding的REST API的第一段开始,它必须是超文本驱动的,很明显,他认为自己的工作被广泛误解了: 人们对将任何基于HTTP的接口称为REST API的人数感到沮丧。今天的示例是SocialSite REST API。那就是RPC。它尖叫RPC。显示器上的耦合太多,因此应给定X等级。 字段继续列出了REST API的几个属性。他们中的一些人似乎与SO和其他论坛上的常规做法和常规建议背道而驰。例如: 输入REST API时,除了初始URI(书签)和适合目标受众(即,可能会使用该API的任何客户端都希望理解)的一组标准化媒体类型外,没有其他先验知识。... REST API不得定义固定的资源名称或层次结构(客户端和服务器的明显结合)。... REST API应该花费几乎所有的描述性精力来定义用于表示资源和驱动应用程序状态的媒体类型,或者为现有标准媒体类型定义扩展关系名称和/或启用超文本的标记。... “超文本”的概念起着核心作用-比URI结构或HTTP动词的含义要重要得多。在以下注释之一中定义了“超文本”: 当我[Fielding]说超文本时,我的意思是信息和控件的同时呈现,以使该信息成为用户(或自动机)通过其获得选择并选择动作的能力。超媒体只是文本在媒体流中包含时间锚点的扩展。大多数研究人员都放弃了这一区别。 在浏览器中,超文本不需要是HTML。当机器了解数据格式和关系类型时,它们可以跟随链接。 我正在猜测,但是上面的前两点似乎表明Foo资源的API文档(如下所示)导致客户端和服务器之间的紧密耦合,并且在RESTful系统中没有位置。 GET /foos/{id} # read a Foo POST /foos/{id} # create a Foo PUT /foos/{id} # update a Foo 相反,应该通过(例如)对/ foos发出GET请求来强制代理发现所有Foos的URI。(这些URI可能遵循上面的模式,但这不重要。)响应使用一种媒体类型,该媒体类型能够传达如何访问每个项目以及如何执行每个项目,从而导致上面的第三点。因此,API文档应集中于解释如何解释响应中包含的超文本。 此外,每次请求Foo资源的URI时,响应都包含代理程序发现如何进行操作所需的所有信息,例如,通过其URI访问关联资源和父资源,或在创建后采取行动/删除资源。 整个系统的关键在于,响应由媒体类型中包含的超文本组成,该媒体类型本身会传达给代理选项以进行处理。这与浏览器为人类工作的方式没有什么不同。 但这只是我在这个特定时刻的最佳猜测。 菲尔丁发表了一篇后续文章,他在评论中回应了批评,即他的讨论过于抽象,缺乏实例且行话丰富: 其他人将尝试以更直接的方式或适用于当今某些实际问题的方式来解读我所写的内容。我可能不会,因为我太忙于处理下一个主题,准备会议,编写另一个标准,前往某个遥远的地方,或者只是做些让我觉得自己已经赚到了薪水的小事。 因此,针对REST专家的两个简单问题是,他们具有实用的思维方式:如何解释Fielding在说什么,以及在记录/实现REST API时如何将其付诸实践? 编辑:这个问题是一个例子,说明如果您不知道所谈论的内容,那么学习一些东西就会有多困难。在这种情况下,名称为“作为应用程序状态引擎的超媒体”(HATEOAS)。
99 rest  hateoas 

9
HATEOAS:绝对或相对URL?
在使用HATEOAS设计RESTful Web服务时,将链接显示为完整的URL(“ http:// server:port / application / customers / 1234 ”)与仅显示路径(“ / application /客户/ 1234“)?
84 rest  hateoas 

6
RESTful API运行时可发现性/ HATEOAS客户端设计
对于我参与的SaaS初创公司,我正在使用RESTful Web API和在使用它的不同平台上构建了几个客户端应用程序。我想我已经弄清楚了API,但是现在我转向客户。当我阅读有关REST的文章时,我发现REST的关键部分是发现,但是关于发现真正含义的两种不同解释之间似乎存在很多争论: 开发人员发现:开发人员将大量API详细信息硬编码到客户端,例如资源URI,查询参数,受支持的HTTP方法以及他们通过浏览文档并试验API响应而发现的其他详细信息。恕我直言,这种类型的发现需要很酷的链接和API版本控制问题,并导致客户端代码与API的硬耦合。似乎没有比使用有据可查的RPC收藏更好的了。 运行时发现-客户端应用程序本身能够以很少或没有带外信息(大概只有API所处理的媒体类型的知识)来找出所需的一切。链接可能很热。但是,要使API非常高效,似乎需要对查询参数进行大量链接模板处理,从而使带外信息重新出现。自从我还没有想到过,我可能还没有想到其他困难。在开发中达到了这一点。但是我确实喜欢松散耦合的想法。 运行时发现似乎是REST的圣杯,但是我很少看到有关如何实现这种客户端的宝贵讨论。我发现的几乎所有REST资源似乎都假定开发人员发现了。有人知道一些运行时发现资源吗?最佳做法?带有真实代码的示例或库?我正在使用PHP(Zend Framework)的一个客户端。另一个是Objective-C(iOS)。 考虑到开发人员社区中现有的工具和知识,运行时发现是否是一个现实的目标?我可以编写客户端以不透明的方式处理所有URI,但是如何最有效地执行此操作是一个问题,尤其是在低带宽连接上。无论如何,URI只是方程式的一部分。在运行时上下文中链接模板怎么样?除了发出大量OPTIONS请求外,如何交流支持哪些方法?
79 api  rest  discovery  hateoas 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.