如何在查询字符串参数和资源名称 url 构建新端点之间进行选择?
how to choose between query string params and resource name url building a new endpoint?
我有 3 个 models/resources:
Model A
Model B
Model C
属于 Model A
和 Model B
然后,我可以像这样构建 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 中事情很少是非黑即白的。
我有 3 个 models/resources:
Model A
Model B
Model C
属于Model A
和Model B
然后,我可以像这样构建 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 中事情很少是非黑即白的。