Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
如何在RESTAPI中实现具有关系的资源的完整资源更新端点?_Rest_Http_Put - Fatal编程技术网

如何在RESTAPI中实现具有关系的资源的完整资源更新端点?

如何在RESTAPI中实现具有关系的资源的完整资源更新端点?,rest,http,put,Rest,Http,Put,假设我有一个票证资源,它与注释资源和用户资源有关系,我需要为票证资源使用HTTP PUT实现一个完整的资源更新端点 注释是票证的直接子项,因此如果没有父票证,它就不能存在。 用户可以不带票据而存在,因为它不是票据的直接子项 根据我的研究,使用HTTP PUT的资源的更新端点应该包括资源及其关系的所有字段- 现在如何实现票证的更新端点 如果我需要传递票据和关联用户的所有注释,我认为票据的更新端点的代码将非常复杂,特别是如果关联注释和用户也与其他资源有关系,并且假设我们使用的是关系数据库,并且这些资

假设我有一个票证资源,它与注释资源和用户资源有关系,我需要为票证资源使用HTTP PUT实现一个完整的资源更新端点

注释是票证的直接子项,因此如果没有父票证,它就不能存在。 用户可以不带票据而存在,因为它不是票据的直接子项

根据我的研究,使用HTTP PUT的资源的更新端点应该包括资源及其关系的所有字段-

现在如何实现票证的更新端点

如果我需要传递票据和关联用户的所有注释,我认为票据的更新端点的代码将非常复杂,特别是如果关联注释和用户也与其他资源有关系,并且假设我们使用的是关系数据库,并且这些资源位于不同的表上。而且,有效载荷的大小将非常大

有没有现成的例子可以供我参考


提前谢谢

至少在我看来,以牺牲复杂性为代价坚持HTTP请求中“应该”的内容是毫无意义的时间浪费。尝试并按照协议将其组织起来是很好的,但是从中得到的实际价值是微乎其微的。“做有意义的事吧!”卡哥特迈斯特我同意你的看法。我仍然很好奇有人会如何以真正的REST方式实现它。目前正在考虑一种实用的方法,通过使用PUT实现端点来获取资源,但忽略了关联。或者,在上面的场景中,不要使用PUT实现更新端点,而只是使用补丁实现部分更新端点,就像Github所做的那样(如果我没有弄错的话)。您会注意到,使用PUT的端点不可用。再说一次,这一切都是有意义的。如果你要检索一大堆信息,只是想把它们再次传回到服务器上,那真的没有意义。如果您在客户机中有数据,并且希望避免在服务器中进行大量昂贵的查找,那么您可以将其全部传递下去。通常,我们只传递足够的数据,使服务器能够进行查找并检索自身所需的其余内容。我们还倾向于对模型进行编码,以便进行更新的方法可以被其他方法调用,从而使它们可以重用。