REST API-客户端如何知道将有效的有效载荷发布到资源?

问题描述 投票:10回答:4

REST API体系结构的目标之一是将客户端和服务器分离。

我在计划REST API时遇到的一个问题是:“客户端如何知道POST方法的有效负载是什么?”

以某种方式,API需要向UI传达给定资源的POST方法有效的有效载荷。否则,我们将再次依赖于使用API​​所必需的带外知识,然后再次紧密耦合。

因此,我想到资源上GET的API响应将提供规范,以为该资源上的POST方法构造有效的有效负载。这将包括字段名称,数据类型,最大长度等。

This guy has a similar idea

处理此问题的正确方法是什么?大多数人只是依靠带外信息吗?人们在现实世界中正在为这个问题做什么?

编辑

下面的序列图中说明了我想解决该问题的方法:

“其余api序列图”“ >>

客户端和api服务是分开的。客户知道:

  1. 入口点
  2. 如何通过超媒体浏览API。
  3. 发生的事情:

  1. 某人(用户)向客户端请求注册页面
  2. 客户端从API请求入口点,并接收所有超媒体链接以及有关如何合法遍历的适当元数据。
  3. 客户端基于与注册超媒体POST方法关联的元数据构造注册表单。
  4. 用户填写表格并提交。
  5. 带有正确数据的客户端POST到API,一切都很好。
  6. 无需任何魔法/元资源,无需使用元数据方法。一切都由API提供。

想法?

REST API体系结构的目标之一是将客户端和服务器分离。我在计划REST API时遇到的问题之一是:“客户端如何知道什么是有效的...

rest post decoupling
4个回答
3
投票

大多数人都依赖带外信息。不过,这通常可以,因为大多数客户端不是动态构建的,而是静态构建的。它们依赖于API的已知部分,而不是由HATEOAS驱动。


1
投票

您是正确的,客户应了解响应中链接的语义,并从中选择合适的链接以实现其目标。客户端与API提供的与此相关的语义相关,而不与API本身相关。因此,例如,客户端不应该从URI结构中检索信息,因为它与实际的API紧密耦合。


0
投票

我想您是在询问Rest API 元数据


0
投票

使用RFC 6861,您可以使用create-formedit-form链接关系链接到表单,而不是由客户端自行构造表单。相应的表单应具有构造POST请求的必要模式。

© www.soinside.com 2019 - 2024. All rights reserved.