Laravel POST 可以路由 return 视图而不是重定向到另一条路由吗?

Can a Laravel POST route return a view instead of redirecting to another route?

我 seen/worked 在很多项目中 Laravel POST 路线如下所示:

Route::post('/some-url', [SomeController::class, 'someMethod']);

控制器及其处理路由的方法如下所示:

class SomeController extends Controller
{
    public function someMethod(Request $request) {
        // My Logic to do something with the post data - $request
        return redirect("/some-other-url");
    }
}

按照惯例,在处理 POST 数据后总是重定向到特定的 URL。

我想知道,在处理完 POST 请求后,是否可以只 return 像我们处理 GET 请求那样的视图?我知道它有效,但这只是惯例还是这样做有什么问题?

例如:

class SomeController extends Controller
{
    public function someMethod(Request $request) {
        // My Logic to do something with the post data - $request
        return view("somebladeview")->with(["result" => $result ]);
    }
}

该模式称为post-redirect-get, or PRG. It is convention because POST should be used for requests that change data,而GET 应该用于简单地显示数据。

如果您 return 在 POST 之后查看,用户可以点击重新加载,并且(可能无意地)再次更改数据,例如第二次购买东西。通过使用 PRG,用户点击重新加载只是重新加载最后一个 GET,它只是重新显示一些东西。

注意:在您的问题的评论中有一些建议忽略此约定。我认为这是不明智和危险的,这些约定的存在是有充分理由的。