【问题标题】:detect HTTP method name in module.php of zend after exception has thrown抛出异常后检测zend的module.php中的HTTP方法名称
【发布时间】:2015-09-23 08:57:34
【问题描述】:

我需要从 module.php 文件中检测 HTTP 方法名称。为此,我尝试了以下代码,它只给了我 GET 方法,

use Zend\Http\Request;
$getRequest = new Request();
$httpMethod=$getRequest->getMethod();

但在 $httpMethod 变量中,我只获取 GET 作为方法名称。我正在处理错误,因此我需要检测我的 REST Api 正在调用哪个方法。是否有任何解决方案,所以我也可以检测 PUT、POST 和 DELETE 方法。

提前致谢。

【问题讨论】:

    标签: php http exception module zend-framework2


    【解决方案1】:

    您的代码几乎就在那里;您需要创建(或从服务管理器检索)Zend\Http\PhpEnvironment\Request 的实例。

    不同的是这个类会use the value of $_SERVER['REQUEST_METHOD'] and set it within the constructor.

    $request = new \Zend\Http\PhpEnvironment\Request();
    $method = $request->getMethod();
    

    【讨论】:

    • 嘿亚历克斯,我如何在 module.php zf2 中接收 PUT 和 DELETE 参数。
    • 请求类似乎没有提供这个。但是,您可以使用请求正文检索它并解析内容,例如 parse_str($request->getContent(), $data)(其中 $data 填充有 PUT 参数)
    • 做同样的事情 parse_str($request->getContent(), $data); var_dump($data);死;但是数组结果有 0 个参数,但我发送了 2 个参数。它应该加载到 $data 数组中。但没有得到它。
    • 相同的代码适用于 DELETE 方法。但是数组导致 PUT 请求的长度为 0。
    【解决方案2】:

    你可以使用原生 PHP;

    $httpMethod = $_SERVER['REQUEST_METHOD'];
    

    【讨论】:

    • 你知道我们如何通过zend framework 2实现同样的目标
    • 我没有使用 Zend 的经验,所以我无法为您提供更多帮助。
    • 无论如何,谢谢,np。我知道如何接收 GET 和 POST 参数,需要了解 PUT 和 DELETE 技术。
    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 2015-09-30
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多