非单资源下的资源还是RESTful?
Is a resource under a non-singular resource still RESTful?
通常在设计 REST 时 API 我看到 /resourceA/{id}/resourceThatBelongsToA
的常见模式。
设计API时可以做/resourceA/resourcesThatBelongToA
吗?
现实生活中的例子
假设我有一个类似于 Whosebug 的 Web 应用程序。有问题,每个问题的状态为accepted
或not accepted
。
我公开了一个端点 /questions/{id}/status
以便用户可以确定问题是否有可接受的答案。
然后我 运行 进入了想要发现所有具有可接受答案的问题的问题。然后我定义了一个端点 /questions/statuses?status=accepted
。当没有给定查询参数时,此端点将列出所有问题的所有状态(对状态数量有合理限制 return,比如 100)。但是,当给定状态类型的过滤器时,我可以确定所有答案已被接受的问题。
对我来说,这似乎是一个非常适合用例的实用设计。
这是可以接受的模式还是有更合适的模式?
REST API 当您拥有您正在处理的父资源的唯一 ID 时,它看起来不错。如果您想获取具有特定 ID 的问题资源,/questions/{id}
很好。但是,如果您没有唯一 ID,并且响应将是一组资源,那么它只是应用于父资源的过滤器。
所以对于你的情况,API 可以是
/questions?status=accepted
如果您希望 api 消费者能够灵活地选择限制,您可以为其使用查询参数 limit。
/questions?status=accepted&limit=10
Is it ok to do /resourceA/resourcesThatBelongToA when designing an API?
是的。
REST 不关心您使用什么拼写作为标识符。
REST 不关心您如何组织资源层次结构。
Is this an acceptable pattern to use or is there something more suitable?
我推荐的启发式方法是"would you do it this way with a web site?"如果答案是肯定的,那么你就走对了。
通常在设计 REST 时 API 我看到 /resourceA/{id}/resourceThatBelongsToA
的常见模式。
设计API时可以做/resourceA/resourcesThatBelongToA
吗?
现实生活中的例子
假设我有一个类似于 Whosebug 的 Web 应用程序。有问题,每个问题的状态为accepted
或not accepted
。
我公开了一个端点 /questions/{id}/status
以便用户可以确定问题是否有可接受的答案。
然后我 运行 进入了想要发现所有具有可接受答案的问题的问题。然后我定义了一个端点 /questions/statuses?status=accepted
。当没有给定查询参数时,此端点将列出所有问题的所有状态(对状态数量有合理限制 return,比如 100)。但是,当给定状态类型的过滤器时,我可以确定所有答案已被接受的问题。
对我来说,这似乎是一个非常适合用例的实用设计。
这是可以接受的模式还是有更合适的模式?
REST API 当您拥有您正在处理的父资源的唯一 ID 时,它看起来不错。如果您想获取具有特定 ID 的问题资源,/questions/{id}
很好。但是,如果您没有唯一 ID,并且响应将是一组资源,那么它只是应用于父资源的过滤器。
所以对于你的情况,API 可以是
/questions?status=accepted
如果您希望 api 消费者能够灵活地选择限制,您可以为其使用查询参数 limit。
/questions?status=accepted&limit=10
Is it ok to do /resourceA/resourcesThatBelongToA when designing an API?
是的。
REST 不关心您使用什么拼写作为标识符。 REST 不关心您如何组织资源层次结构。
Is this an acceptable pattern to use or is there something more suitable?
我推荐的启发式方法是"would you do it this way with a web site?"如果答案是肯定的,那么你就走对了。