Nasıl php (POST, PUT veya DELETE GET) hangi istek türü kullanıldı algılayabilir?
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');