PHP istek türünü tespit (GET, POST, PUT veya DELETE)

3 Cevap php

Nasıl php (POST, PUT veya DELETE GET) hangi istek türü kullanıldı algılayabilir?

3 Cevap

Kullanarak

$_SERVER['REQUEST_METHOD']

Daha fazla ayrıntı için documentation for the $_SERVER variable bakın.

PHP REST oldukça basit yapılabilir. Create http://example.com/test.php (aşağıda özetlenmiştir). DİNLENME aramalar, örneğin için kullanın http://example.com/test.php/testing/123/hello. Bu kutunun dışında Apache ve Lighttpd ile çalışır ve hiçbir yazma kuralları ihtiyaç vardır.

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

switch ($method) {
  case 'PUT':
    rest_put($request);  
    break;
  case 'POST':
    rest_post($request);  
    break;
  case 'GET':
    rest_get($request);  
    break;
  case 'HEAD':
    rest_head($request);  
    break;
  case 'DELETE':
    rest_delete($request);  
    break;
  case 'OPTIONS':
    rest_options($request);    
    break;
  default:
    rest_error($request);  
    break;
}
?>

Bu REST hakkında olduğundan, sadece sunucu istek yöntemini almak yeterli değildir. Ayrıca sığınakta rota parametreleri almak gerekir. Sığınakta parametreleri ve GET / POST / PUT parametreleri ayırmak için neden bir kaynak tanımlanması için kendi benzersiz bir URL olması gerekiyor.

İşte Slim kullanarak PHP dinlendirici yolları uygulanması bir yolu:

https://github.com/codeguy/Slim

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

Ve buna göre sunucusunu yapılandırın.

İşte AltoRouter kullanarak başka bir örnek:

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');