检查请求是 GET 还是 POST
Posted
技术标签:
【中文标题】检查请求是 GET 还是 POST【英文标题】:Check if request is GET or POST 【发布时间】:2014-01-30 14:56:16 【问题描述】:在我的控制器/动作中:
if(!empty($_POST))
if(Auth::attempt(Input::get('data')))
return Redirect::intended();
else
Session::flash('error_message','');
Laravel
中是否有方法可以检查请求是POST
还是GET
?
【问题讨论】:
【参考方案1】:根据Laravels docs,有一个Request方法可以检查它,所以你可以这样做:
$method = Request::method();
或
if (Request::isMethod('post'))
//
【讨论】:
【参考方案2】:上述解决方案已过时。
根据Laravel documentation:
$method = $request->method();
if ($request->isMethod('post'))
//
【讨论】:
Undefined variable: request
这适用于您将请求传递给函数的情况,例如function myFunction (Request $request, $otherParams) if($request->method == 'get')
或者只是在任何地方使用request()->isMethod('post')
,因为函数request()
在Laravel全局注册。【参考方案3】:
我已经在 laravel 版本中解决了如下问题:7+
**In routes/web.php:**
Route::post('url', YourController@yourMethod);
**In app/Http/Controllers:**
public function yourMethod(Request $request)
switch ($request->method())
case 'POST':
// do anything in 'post request';
break;
case 'GET':
// do anything in 'get request';
break;
default:
// invalid request
break;
【讨论】:
【参考方案4】:当然有一种方法可以找出请求的类型,But 而你应该定义一个处理POST
请求的路由,因此你不需要条件语句.
routes.php
Route::post('url', YourController@yourPostMethod);
在你的控制器/动作中
if(Auth::attempt(Input::get('data')))
return Redirect::intended();
//You don't need else since you return.
Session::flash('error_message','');
GET
请求也是如此。
Route::get('url', YourController@yourGetMethod);
【讨论】:
下面汤姆的解决方案(未选)更好 @Krynble 你否决了我的回答,因为它是错误的还是因为它不是最好的? 只是因为我相信它没有回答问题;你说的有道理,但对于非常简单的任务(以及添加服务器端验证时),我相信最好在单个控制器方法中处理。 @Krynble 你如何实现你的单一控制器方法Route::any()
?
是的,我使用 Route::any() 并在控制器方法中处理所有内容;包括验证和在需要时显示输入的表单信息。【参考方案5】:
使用Request::getMethod()
来获取当前请求所使用的方法,但这应该很少需要,因为 Laravel 会根据请求类型调用控制器的正确方法(例如,getFoo()
用于 GET,postFoo()
用于 POST) .
【讨论】:
Laravel 3 中的is_post
和 is_get
不就是因为 Laravel 4 使用 camelCase 吗?
对 GET 和 POST 使用单独的方法可能是不可取的。对于简单的 CRUD 用例,对 GET 或 POST 使用相同的方法可以减少代码重复并降低开发的心理负担。【参考方案6】:
$_SERVER['REQUEST_METHOD']
用于此目的。
它返回以下之一:
'获取' '头' 'POST' 'PUT'【讨论】:
以上是关于检查请求是 GET 还是 POST的主要内容,如果未能解决你的问题,请参考以下文章
springmvc 能否通过代码获取到请求是post还是get?还有action配置的请求方式?
有没有人遇到nginx做代理,get请求有效,post请求是404