REST API - 客户端如何知道POST到资源的有效负载是什么?

ric*_*ard 10 rest post decoupling

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

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

不知何故,API需要向UI传达给定资源的POST方法的有效负载.否则,我们回到依赖于使用API​​所需的带外知识,我们再次紧密耦合.

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

这家伙也有类似的想法.

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

编辑

我想出的解决这个问题的方法如下面的序列图所示:

休息api序列图

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

  1. 入口点
  2. 如何通过超媒体导航API.

这是发生的事情:

  1. 某人(用户)从客户端请求注册页面
  2. 客户端从API请求入口点,并接收所有超媒体链接以及有关如何合法遍历它们的适当元数据.
  3. 客户端基于与注册超媒体POST方法相关联的元数据构造注册表单.
  4. 用户填写表格并提交.
  5. 客户端使用正确的数据POST到API,一切都很顺利.

没有魔法/元资源,不需要使用元数据的方法.一切都由API提供.

思考?

Mal*_*ana 0

我认为您问的是 Rest API元数据处理。与 不同的是SOAP,Rest API 通常不使用元数据,但有时,一旦您的 api 大小变大,它会非常有用。

我认为你应该研究一下swagger。这是您能找到的最优雅的 Rest api。我已经使用它一段时间了,并且有了注释支持,使用起来相当容易。它还在github上找到了许多示例。另一个优点是,它包含很好的可配置ui

除此之外,您还可以找到其他方法,例如WADLWSDL 2.0。尽管我没有使用过它们,但您可以在此处阅读有关它们的更多信息。