首页 > 解决方案 > 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

解决方案


如果我正确理解您的问题,请查看这篇文章(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');

推荐阅读