laravel - RESTful API和Web路由的正确方法是什么
问题描述
假设我想为外部设备(如 Android)制作一个 RESTful API,同时我想使用 Web 路由和 Blade 模板来使用这个 API。
路线: api/articles/{id}/edit
public function API_edit(Article $article)
{
$article->body = request('body');
$article->save();
return response()->json([...]);
}
现在事情就是这样。我应该怎么做才能不重复自己?因为我想创建另一个与 API_edit 基本相同的方法是不行的。
路线: articles/{id}/edit
public function edit(Article $article)
{
$article->body = request('body');
$article->save();
return redirect()->back()->with(['message' => 'Article edited']);
}
这一定是错误的,这是一个简单的例子,但如果逻辑更复杂怎么办?感觉不对。
解决方案
如果我正确理解您的问题,请查看这篇文章(Laravel Web 和 API 控制器结构。分离与 DRY)。
当在 RESTful API 中用于 Vue/Angular 等外部框架或任何外部服务时,您需要设置和“复制”两者的路由,并让这些路由在内部处理web.php
以处理内部请求。
但是,您仍然可以将这些请求指向同一个控制器。
如下所示:
web.php
Route::get('/some/web/request', 'YourController@function')
api.php
Route::get('/some/api/request', 'YourController@function');
推荐阅读
- python-3.x - 使用python删除csv文件相同行上的相同值
- ios - CollectionView 失去对数据模型的引用
- memset - 解释 memset(arr, 10, n*sizeof(arr[0])) 的功能?
- c++ - Svd Armadillo 给出一些 NaN 值
- vba - 尝试通过 Excel-VBA 中的早期/后期绑定创建/设置 Outlook 对象时收到“请求的操作需要提升”
- sql - 用 SQL 中的联接替换子查询
- c++ - 使用 QT 编译:找不到 libGL.so.1
- jenkins - Jenkins Pipeline Downstream Jobs - 在特定阶段继续下一个工作
- spring - 如何使用 Hibernate 3.6.3 在 Spring 3.0.2 中将 Ehcache 迁移到 Infinispan Cache?
- c++ - 具有 std::minmax 和右值的结构化绑定