【发布时间】:2023-03-31 22:22:01
【问题描述】:
我需要构建我的应用程序的移动版本。移动应用程序将具有相同的功能,为此我需要为我的 Web 应用程序构建一个 API,该 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 包。
【问题讨论】:
-
你似乎已经想通了。你有什么问题?
-
@BrianGlaz 我有这个想法,但我不知道它是否有好处(阅读:这是应该做的方式)或如何实际去做。如您所见,我在最后一个sn-p中只有一些虚拟内容。