Api 如何在遵守REST原则的同时传递任意数量的参数

Api 如何在遵守REST原则的同时传递任意数量的参数,api,rest,database-design,api-design,Api,Rest,Database Design,Api Design,我有一个包含3个表的数据库:product、category、和xref\u product\u category。我的业务逻辑允许产品与任意数量的类别(床、浴室、厨房等)关联。就设计RESTAPI而言,建立这些关系的最佳方法是什么 出于某种原因,我不太愿意将类别ID的JSON数组作为参数传递,但我真的没有理由不这样做。我想另一种选择是进行一系列PUT调用,每次传递一个参数。建立这样多个关系的最安静的方式是什么?这应该在单个API调用中完成,还是在多个调用中完成?在REST中,“任意数量的参数”

我有一个包含3个表的数据库:
product
category
、和
xref\u product\u category
。我的业务逻辑允许产品与任意数量的类别(床、浴室、厨房等)关联。就设计RESTAPI而言,建立这些关系的最佳方法是什么

出于某种原因,我不太愿意将类别ID的JSON数组作为参数传递,但我真的没有理由不这样做。我想另一种选择是进行一系列
PUT
调用,每次传递一个参数。建立这样多个关系的最安静的方式是什么?这应该在单个API调用中完成,还是在多个调用中完成?

在REST中,“任意数量的参数”通常表示“表示”

作为一个整体,这些参数很可能被组合到有效负载内容中以表示资源

因此,首先定义有效负载的模式,然后您将拥有一个可用于表示它的媒体类型。记录模式并告诉将使用API的人员,他们可以发布或放置该内容来定义产品及其与其他资源的任意关系


然后定义
产品
资源的URI,以及客户端如何从一个很酷的(入口点)URI导航到它

我允许以任何顺序传递参数。

出于某种原因,我不太愿意将类别ID的JSON数组作为参数传递,但我真的没有理由不这样做。那么你有没有理由?@ikinciviking:我还没有看到很多著名的api将数组作为参数。不过,我意识到这不是一个强有力的理由。通过什么样的想象,一组类别是一种资源?我是说,如果OP的
产品
资源可以包含任意数量的指向其他资源的链接,那么使用POST/PUT创建/修改产品应该通过对这些链接进行编码来完成(以及产品类型的其他属性)。换句话说,它所属的类别集应该是资源的一部分,并在其表示中进行编码。对不起,我以为您的意思是类别集将是资源。