如何在查询字符串参数和资源名称 url 构建新端点之间进行选择?

how to choose between query string params and resource name url building a new endpoint?

我有 3 个 models/resources:

然后,我可以像这样构建 API 路由:

/api/a-resources/x/c-resources

/api/b-resources/x/c-resources

或者我可以这样做:

/api/c-resources?a_resource_id=x

/api/c-resources?b_resource_id=x

获得类似的行为...

问题是:

我需要问自己在这些选项中做出什么选择?

或许想想你的 API 将如何被消费,消费者的工作流程是什么?

  • 如果它首先要导航到资源 A/B,然后他可能会请求 C,第一个选项似乎更合适;
  • 但是,如果还有他可能直接需要资源C的场景,那么你可以选择后者。

你显然可以选择其中任何一个,没有错,在 REST 中事情很少是非黑即白的。