RESTful API设计:url参数应该有默认值吗?

RESTful API设计:url参数应该有默认值吗?,rest,api,http,architecture,Rest,Api,Http,Architecture,在设计HTTP RESTful API时,如果省略了带有默认值的参数,可以吗?还是这让人困惑 例如: /职位?类别=20,21,18 缺少limit参数,因此我们默认将limit设置为limit=100 /职位?类别=20,21,18&限额=200 将限制设置为200,覆盖默认值 在API中为参数设置默认值可以吗?或者这会让试图理解API的开发人员感到困惑吗?默认参数的责任应该由使用API的客户端承担吗?当然可以。只要您的文档得到良好的维护,并显示需要哪些PARAN以及哪些PARAN具有默认值,

在设计HTTP RESTful API时,如果省略了带有默认值的参数,可以吗?还是这让人困惑

例如:

/职位?类别=20,21,18

缺少limit参数,因此我们默认将limit设置为limit=100

/职位?类别=20,21,18&限额=200

将限制设置为200,覆盖默认值


在API中为参数设置默认值可以吗?或者这会让试图理解API的开发人员感到困惑吗?默认参数的责任应该由使用API的客户端承担吗?

当然可以。只要您的文档得到良好的维护,并显示需要哪些PARAN以及哪些PARAN具有默认值,它就不会混淆开发人员。例如,看看GitLab的RESTAPI文档

虽然这个问题的答案在很大程度上取决于具体情况,但提供合理的违约是非常常见的

例如,我们可以看看谷歌是如何用他们的搜索做事情的。搜索猫时,可以使用它们的q参数:。谷歌不会返回所有635000000条搜索结果,因为你没有指定限制,他们做出合理的假设,他们可以将搜索结果限制在一个设定的数字,然后等待你提出更多的请求

进一步查看您的示例,当使用API的客户端忽略limit参数时,实际上只有两个选项:

返回错误 设置默认值 通常,您希望避免返回错误,除非出现实际错误,例如,如果端点具有对流程至关重要的必填字段

所以我们设置了一个默认值。在limit参数的情况下,除了响应错误之外,没有办法避免设置默认值。无论您以每个可能的条目、100个条目、1个条目或无条目进行响应,所有这些都是默认类型。本质上,不选择就是选择