在PHP中检测请求类型(GET,POST,PUT或DELETE)

如何在PHP中检测使用哪种请求类型(GET,POST,PUT或DELETE)?


通过使用

$_SERVER['REQUEST_METHOD']

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
     // The request is using the POST method
}

有关更多详细信息,请参阅$ _SERVER变量的文档。


PHP中的REST可以非常简单地完成。 创建http://example.com/test.php(如下所述)。 将其用于REST调用,例如http://example.com/test.php/testing/123/hello。 这适用于开箱即用的Apache和Lighttpd,不需要重写规则。

<?php
$method = $_SERVER['REQUEST_METHOD'];
$request = explode("/", substr(@$_SERVER['PATH_INFO'], 1));

switch ($method) {
  case 'PUT':
    do_something_with_put($request);  
    break;
  case 'POST':
    do_something_with_post($request);  
    break;
  case 'GET':
    do_something_with_get($request);  
    break;
  default:
    handle_error($request);  
    break;
}

检测HTTP方法或所谓的REQUEST METHOD可以使用下面的代码片段来完成。

$method = $_SERVER['REQUEST_METHOD']
if ($method == 'POST') {
    // Method is POST
} elseif ($method == 'GET') {
    // Method is GET
} elseif ($method == 'PUT') {
    // Method is PUT
} elseif ($method == 'DELETE') {
    // Method is DELETE
} else {
    // Method unknown
}

如果你更喜欢if-else语句,你也可以使用switch

如果在html表单中需要使用除GETPOST以外的方法,则通常使用表单中的隐藏字段来解决此问题。

<!-- DELETE method -->
<form action='' method='POST'>
    <input type="hidden" name'_METHOD' value="DELETE">
</form>

<!-- PUT method -->
<form action='' method='POST'>
    <input type="hidden" name'_METHOD' value="PUT">
</form>

有关HTTP方法的更多信息,我想参考下面的StackOverflow问题:

HTTP协议的PUT和DELETE及其在PHP中的使用

链接地址: http://www.djcxy.com/p/10025.html

上一篇: Detecting request type in PHP (GET, POST, PUT or DELETE)

下一篇: What is the rationale for all comparisons returning false for IEEE754 NaN values?