method - php_request vs_post




在PHP中檢測請求類型(GET,POST,PUT或DELETE) (7)

它非常簡單,只需使用$ _SERVER ['REQUEST_METHOD'];

例:

<?php
$method = $_SERVER['REQUEST_METHOD'];
switch ($method) {
  case 'GET':
    //Here Handle GET Request 
    break;
  case 'POST':
    //Here Handle POST Request 
    break;
  case 'DELETE':
    //Here Handle DELETE Request 
    break;
  case 'PUT':
    //Here Handle PUT Request 
    break;
}
?>

如何在PHP中檢測使用哪種請求類型(GET,POST,PUT或DELETE)?


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;
}

您可以獲取任何查詢字符串數據,即www.example.com?id=2&name=r

您必須使用$_GET['id']$_REQUEST['id']獲取數據。

發布數據意味著像表單<form action='' method='POST'>您必須使用$_POST$_REQUEST


我們還可以使用input_filter來檢測請求方法,同時通過輸入衛生提供安全性。

$request = filter_input(INPUT_SERVER, 'REQUEST_METHOD', FILTER_SANITIZE_ENCODED);

由於這是關於REST的,僅僅從服務器獲取請求方法是不夠的。 您還需要接收RESTful路由參數。 分離RESTful參數和GET / POST / PUT參數的原因是資源需要有自己唯一的URL用於識別。

以下是使用Slim在PHP中實現RESTful路由的一種方法:

https://github.com/codeguy/Slim

$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
  echo "Hello, $name";
});
$app->run();

並相應地配置服務器。

這是使用AltoRouter的另一個例子:

https://github.com/dannyvankooten/AltoRouter

$router = new AltoRouter();
$router->setBasePath('/AltoRouter'); // (optional) the subdir AltoRouter lives in

// mapping routes
$router->map('GET|POST','/', 'home#index', 'home');
$router->map('GET','/users', array('c' => 'UserController', 'a' => 'ListAction'));
$router->map('GET','/users/[i:id]', 'users#show', 'users_show');
$router->map('POST','/users/[i:id]/[delete|update:action]', 'usersController#doAction', 'users_do');

當一個方法被請求時,它將有一個array 。 所以只需檢查count()

$m=['GET'=>$_GET,'POST'=>$_POST];
foreach($m as$k=>$v){
    echo count($v)?
    $k.' was requested.':null;
}

3v4l.org/U51TE


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

這樣你也可以在zend framework 2中實現。 謝謝。





request