Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest API具有(太)多链接和/或多个选择要求_Rest_Hateoas - Fatal编程技术网

Rest API具有(太)多链接和/或多个选择要求

Rest API具有(太)多链接和/或多个选择要求,rest,hateoas,Rest,Hateoas,我们正在设计一个API,以支持配置和运行基于许多参数的报告,其中一些参数具有许多(数千)多个可选值。我正在寻找一种方法,以提供这些选项以外的东西个人链接 首先,我们希望以b/c依赖关系的有序方式遍历参数(我认为是子资源) POST v1/reports/GUID/parm1 w/ JSON payload {parm1: value1} POST v1/reports/GUID/parm2 etc 在某个时候,parmX将有很多选择。假设parmX-1已经提交,我们想向他们展示一些parmX的

我们正在设计一个API,以支持配置和运行基于许多参数的报告,其中一些参数具有许多(数千)多个可选值。我正在寻找一种方法,以提供这些选项以外的东西个人链接

首先,我们希望以b/c依赖关系的有序方式遍历参数(我认为是子资源)

POST v1/reports/GUID/parm1 w/ JSON payload {parm1: value1}
POST v1/reports/GUID/parm2 etc
在某个时候,parmX将有很多选择。假设parmX-1已经提交,我们想向他们展示一些parmX的(多个)多选择值列表,他们会做一些类似的事情:

POST v1/report/GUID/parmX w/ JSON payload {parmsX: [valueA, valueB, ..., valueC]}
除了在响应中(对parmX-1请求)将选项作为某种JSON对象以及可能将其与实际提供的链接联系在一起的一些属性表示外,我认为无论如何都不需要这样做


这只是属于“有时您必须打破HATEOAS并将其记录在API中”的问题之一吗?

您将如何在网页中解决它?同样的方法(和概念)也适用于REST。对于Web,您可能会返回一个表单,用户必须在某些字段中输入值。在REST中,可以重用HTML表单,也可以使用类似的方法,例如或定义您自己的媒体类型,该媒体类型描述选项和选择的外观,以便您的UI可以将它们呈现给用户。这样的自定义媒体类型应该向ThoughtHalo+json规范在哪里注册?我在IANA的链接上没看到。我想象的客户媒体与它非常相似。不幸的是,除了一些基本的,目前还没有官方的规范,但是你可以看看,了解一些其他媒体类型,它们支持类似的东西。谢谢。我们的REQ和halo+json等格式之间的一个(很大的?)区别是,我们有依赖关系,例如,如果您更改parm1上的选择,那么parm2的允许值可能不仅不同,而且是完全不同的类型。在我们当前的专有版本中,我们可以控制此客户端并动态刷新parm2。但是我们不能允许一次任意选择和提交所有表单控件。我不太明白你的意思。表单是服务器期望从客户端输入的内容的一般描述。它不绑定到服务器端的特定对象类型。当然,您需要能够将模型映射到表单的表示形式。这可以基于通过反射查看对象具有哪些字段,并基于字段的类型生成表单。某些注释可用于跳过某些字段或将其映射到其他“小部件”元素。我不是100%理解你所说的完全不同类型的
,但是…你如何在网页中解决这个问题?同样的方法(和概念)也适用于REST。对于Web,您可能会返回一个表单,用户必须在某些字段中输入值。在REST中,可以重用HTML表单,也可以使用类似的方法,例如或定义您自己的媒体类型,该媒体类型描述选项和选择的外观,以便您的UI可以将它们呈现给用户。这样的自定义媒体类型应该向ThoughtHalo+json规范在哪里注册?我在IANA的链接上没看到。我想象的客户媒体与它非常相似。不幸的是,除了一些基本的,目前还没有官方的规范,但是你可以看看,了解一些其他媒体类型,它们支持类似的东西。谢谢。我们的REQ和halo+json等格式之间的一个(很大的?)区别是,我们有依赖关系,例如,如果您更改parm1上的选择,那么parm2的允许值可能不仅不同,而且是完全不同的类型。在我们当前的专有版本中,我们可以控制此客户端并动态刷新parm2。但是我们不能允许一次任意选择和提交所有表单控件。我不太明白你的意思。表单是服务器期望从客户端输入的内容的一般描述。它不绑定到服务器端的特定对象类型。当然,您需要能够将模型映射到表单的表示形式。这可以基于通过反射查看对象具有哪些字段,并基于字段的类型生成表单。某些注释可用于跳过某些字段或将其映射到其他“小部件”元素。我并不是100%理解你所说的完全不同的类型。。。