使用Laravel构建REST JSON API

时间:2015-08-05 20:14:25

标签: php json api rest laravel

我需要构建我的应用程序的移动版本。移动应用程序将具有相同的功能,为此我需要为我的Web应用程序构建一个可以从移动客户端访问的API。

让我们举个例子:我有一个名为PostController的控制器类,它负责应用程序中的帖子。这是一个资源控制器。

Route::resource("users.posts", "PostController");

当用户访问http://domain.com/users/{id}/posts/{id}时,他会获得呈现的HTML响应。这是在PostController@show方法中完成的:

public function show($user_id, $post_id) {
    $post = Post::findOrFail($post_id);
    // other logic here

    return view("post.show", ["post" => $post_id]);
}

但现在用户启动了查询http://api.domain.com/users/{id}/posts/{id}的移动应用程序。我知道我可以为API创建一个单独的控制器,但这会导致代码重复。很难维护,不是一个聪明的主意。

如何制作利用现有控制器的JSON API?

也许像

public function show($user_id, $post_id) {
    $post = Post::findOrFail($post_id);
    // other logic here

    if(is api.domain.com) {
        return json
    } else {
        return view("post.show", ["post" => $post_id]);
    }

}

我需要使用OAuth保护API,并且我使用了oauth2-server-laravel包。

1 个答案:

答案 0 :(得分:0)

这主要是个人偏好,我会使用单独的控制器,因为我将api和web应用程序视为单独的应用程序。