作为个人编程项目,我正在努力抓取我的大学课程目录并将数据作为REST API提供.我已经成功地删除了所有数据并将其存储在数据库中,现在我正在使用API.
课程可以根据许多标准进行过滤:教师,大学,学分,时间,日等.
在这种情况下提供API的最佳方法是什么?
选项1
提供大量的URL,例如
example.com/api/byinstructor/<instructorcode>
example.come/api/bycollege/<collegecode>
example.com/api/bycollegeandinstructor/<collegecode>/<instructorcode>
...and so on
我需要有一个所有排列的URL.对我和API消费者而言,这看起来非常麻烦,而且非常糟糕.
选项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查询?
Pet*_*ete 14
为了扩展JF的答案,听起来你有一个资源,一组课程,它们将在URI:
/courses
过滤该资源通常使用查询参数来过滤该单个资源,例如:
/courses?college=123&instructor=321
通过这样做,您可以避免所有可能的排列问题,从而产生大量资源.
从根本上说:有一种资源可以根据需要进行过滤.
GET example.com/courses?college=<collegecode>&instructor=<instructorcode>