【发布时间】:2013-01-06 12:13:48
【问题描述】:
我不知道应该如何为我正在开发的 RESTful API 构建我的 URL。 我的问题来自这样一个事实,有时我需要从一次调用中获取多个连接表。
在一种情况下,我需要获得两张桌子。我有一个名为courses 的表和一个名为topics 的表。我需要获取course_name 行,然后是属于该课程的所有主题。
在另一个例子中,我需要获得三个表。我需要将topics 加入parts 加入bullet_points 表
我应该如何在网址中引用这些?
应该是这样的吗? 获得一门课程:
courses/:course_id/
获取课程及其主题:
courses/:course_id/topics
要获得一个主题及其部分和要点:
courses/:course_id/topics/:topic_id/parts
我是新手,所以想知道我应该如何真正接近 url 的结构。
【问题讨论】:
-
您不应该考虑持久性模型。您最初也应该远离聚合......换句话说,“获得课程及其主题”......不应该发生。 HATEOAS 和个人资源会更好地解决这个问题。每个子 URL 应该只代表子集合/资源。除此之外,URL 结构本身看起来很合理。
-
感谢马特的回复!我想我明白你在说什么。继续将 URI 段附加到 URL 上是不是很糟糕?每个应该包含的段数是否有上限?这是否也意味着我真的不应该通过一个请求来获取连接的表?
-
我认为你的资源应该被分离成好的模型。比如,你应该有
$list = $model->getCourseList()、$course = $model->getCourse($c_id)、$course->getTopicList()、$course->getTopic($t_id);每个人都有一份工作。这样您就可以拨打电话并仅获取该特定请求所需的资源。 -
是的,好的。假设我需要获取课程的所有主题,我将如何在 URL 中做到这一点?我需要开始使用这样的查询参数吗?主题/?course_id=2938
-
@Sneaksta 您建议的 URL 结构看起来不错。