gpt4 book ai didi

mysql - 如何最好地设计具有多个过滤器的 REST API?

转载 作者:可可西里 更新时间:2023-11-01 06:31:37 24 4
gpt4 key购买 nike

作为个人编程项目,我正在努力抓取我大学的类(class)目录并将数据作为 REST API 提供。我已成功抓取所有数据并将其存储在数据库中,现在正在开发 API。

可以根据许多标准过滤类(class):讲师、大学、学分、时间、日期等。

在这种情况下提供 API 的最佳方式是什么?

选项 1

提供多个 URL,例如

example.com/api/byinstructor/<instructorcode>
example.come/api/bycollege/<collegecode>
example.com/api/bycollegeandinstructor/<collegecode>/<instructorcode>
...and so on

我需要为所有排列设置一个 URL。这对我和 API 消费者来说似乎非常麻烦,而且非常不 DRY。

选项 2

只为主要选项提供 API,例如:

example.com/api/byinstructor/<instructorcode>
example.come/api/bycollege/<collegecode>

如果消费者想要 bycollegeandinstructor,他会在自己这边进行过滤。

选项 3

用户传给我一个JSON字符串,我用它来获取过滤条件

example.com/api/getcourses/<jsonstring>

jsonstring =
{
instructor:<instructorcode>,
college:<collegecode>,
...and so on
}

我想除了 Json 字符串,我还可以需要一个 POST 数组,但这对消费者来说似乎不直观,因为他正在获取数据。

或者还有其他我不知道的方法吗?如果第三个选项是最佳选项,您能否提供一个简短的摘要,以便根据可能具有可变数量的值的 JSOn 字符串准备 SQL 查询?

最佳答案

为了扩展 J.F. 的答案,听起来您有一个资源,即一组类(class),它位于 URI 中:

/courses

过滤该资源通常使用查询参数来过滤该单个资源来完成,例如:

/courses?college=123&instructor=321

通过这样做,您可以避免所有可能的排列导致资源激增的问题。

从根本上说:只有一种资源,可以根据需要进行过滤。

关于mysql - 如何最好地设计具有多个过滤器的 REST API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8806844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com