php - Laravel - 检查请求方法

标签 php laravel

我是一个应用程序的 iOS 负责人,并试图在我们的开发人员“不可用”时修复一些 API 错误。我对 Laravel 几乎完全陌生,并试图检查请求方法是什么。我遵循了另一个问题的一些指导,但无法使其正常工作:

public function defaults(Request $request, User $user){
    $follow_ids = explode(',', env('FOLLOW_DEFAULTS'));

    if ($request->isMethod('post')) {
        return ['user' => $user];
    }

    $user->follows()->syncWithoutDetaching($follow_ids);

    return ['user.follows' => $user->follows->toArray()];
}

你知道我在这里可能会出错吗?提前致谢。

当请求返回时,它似乎总是跳过并返回 ['user.follows' => $user->follows->toArray()]

最佳答案

$request应该是 Illuminate\Http\Request 的一个实例.这个类扩展了 Symfony 的请求( Symfony\Component\HttpFoundation\Request ),实际上是 isMethod()方法被定义。

基本上,给定发布的函数定义,它读取“如果这是一个 POST 请求,只返回用户数据。如果这不是 POST 请求(例如 GET),更新并返回关系数据。 ”

因此,如果您发送 POST请求,您将获得 ['user' => $user]回复。如果您发送任何其他请求方法(例如 GET ),您将修改 follows关系并获得 ['user.follows' => $user->follows->toArray()]回复。

对我来说,这似乎是倒退。我想你会想要 POST请求更新数据,以及任何其他仅返回数据的请求(例如 GET )。

如果这是正确的,您需要否定您的isMethod查看:

if (! $request->isMethod('post')) {
    return ['user' => $user];
}

更合适的是,您应该定义单独的 Controller 操作来处理 POST对比 GET请求,但这超出了本问题的范围,并且可能超出了您作为临时维护者想要进入的范围。

关于php - Laravel - 检查请求方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43551188/

相关文章:

javascript - 如何在 AngularJS 部分文件中使用 php (wordpress) 函数?

php - 如何从php中的下拉列表中获取值和id?

mysql - Laravel迁移: Specified key was too long; max key length is 767 bytes

php - Laravel 作业 - 在作业失败后从 failed() 方法访问修改后的属性值

laravel - 无法在 FFmpeg laravel 中获取持续时间

php - Doctrine 查询生成器未给出所有结果 : many-to-many searching id in (x, y)

javascript - 带有寻呼机 DataTable 的复选框 "check/uncheck all"

javascript - 如何在用户关闭浏览器时从mysql数据库中删除一条记录

php - Laravel Ajax 响应和处理错误

php - 获取一个月中的周数和对应的天数