我是一个应用程序的 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/