我需要构建我的应用程序的移动版本。移动应用程序将具有相同的功能,为此我需要为我的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包。
答案 0 :(得分:0)
这主要是个人偏好,我会使用单独的控制器,因为我将api和web应用程序视为单独的应用程序。