非单资源下的资源还是RESTful?

Is a resource under a non-singular resource still RESTful?

通常在设计 REST 时 API 我看到 /resourceA/{id}/resourceThatBelongsToA 的常见模式。

设计API时可以做/resourceA/resourcesThatBelongToA吗?

现实生活中的例子

假设我有一个类似于 Whosebug 的 Web 应用程序。有问题,每个问题的状态为acceptednot 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?"如果答案是肯定的,那么你就走对了。