检查请求是 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_postis_get 不就是因为 Laravel 4 使用 camelCase 吗? 对 GET 和 POST 使用单独的方法可能是不可取的。对于简单的 CRUD 用例,对 GET 或 POST 使用相同的方法可以减少代码重复并降低开发的心理负担。【参考方案6】:

$_SERVER['REQUEST_METHOD'] 用于此目的。

它返回以下之一:

'获取' '头' 'POST' 'PUT'

【讨论】:

以上是关于检查请求是 GET 还是 POST的主要内容,如果未能解决你的问题,请参考以下文章

springmvc 能否通过代码获取到请求是post还是get?还有action配置的请求方式?

C# 判断当前请求是GET还是POST ?

spring mvc 默认请求是get 还是 post

有没有人遇到nginx做代理,get请求有效,post请求是404

请问一下随便写一个链接向tomcat发送一个请求是get方式还是post方式啊,谢谢

ajaxpost请求data是url还是body