2

我为 RESTful API 中的每个资源都有 PHP 类。根据请求方法,它将被路由以调用正确的函数。这是对用户进行 GET 调用的示例:

Class Users{
    public function get($params){
        // get information and return result
    }
}

请求所有用户将是/api/users/. 请求单个用户/api/users/:id
到目前为止没有问题。

现在我的问题:当请求这样/api/users/:id/posts的东西时,API 应该返回用户发布的具有特定 ID 的所有帖子(Posts顺便说一句,是另一个资源)

我将如何在上面给出的 PHP 类结构中实现这个调用?

get()用资源中函数中的参数处理Users
添加新资源UsersPosts
在类的新方法中添加一个函数Users

4

2 回答 2

1

您应该创建一个 Router 类来确定在请求中调用哪个控制器类和方法(查看一些已建立的框架,如 Symfony 或 Kohana,了解它们如何处理路由的想法,甚至使用它们!)。从那里开始,您是否愿意Users::getPosts($userId)Posts:getByUserId($userId)由您决定(对我来说,一个UsersPosts类表示某种交叉引用,可能不是控制器或模型的最佳名称)。

于 2013-08-30T14:47:32.633 回答
0

如果您将“用户”视为帖子资源的过滤器,这将比同时处理 2 个不同的资源更容易。

看起来像这样的东西:

/api/posts/by_user/user_id

通过这种方式,您可以为每个 api 页面保留一个资源,并应用任意数量的过滤器。

/api/posts/by_user/USER_ID/category/videos/

就我个人而言,我走得更远,在 url 方案中还有其他标准,如 order_by 或 order_dir,它们都可以相互附加并互换,例如:

/api/posts/category/videos/by_user/USER_ID/order_by/title/order_dir/asc/limit/5
于 2013-08-30T15:01:20.257 回答