【问题标题】:RESTful API Url StructuringRESTful API URL 结构
【发布时间】: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 结构看起来不错。

标签: php api url rest laravel


【解决方案1】:

我认为您建议的 URL 结构很好。它也很好地对应了良好的资源布局。

// courses
$list = $model->getCourseList();

// courses/c_id
$course = $model->getCourse($c_id);

    // courses/c_id/topics
    $courseTopicList = $course->getTopicList();

    // courses/c_id/topics/t_id
    $courseTopic = $course->getTopic($t_id);

        // courses/c_id/topics/t_id/parts
        $courseTopicParts = $topic->getParts();

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    相关资源
    最近更新 更多