1093 Stimmen

Erkennung des Anfragetyps in PHP (GET, POST, PUT oder DELETE)

Wie kann ich feststellen, welcher Anforderungstyp (GET, POST, PUT oder DELETE) in PHP verwendet wurde?

13voto

nurettin Punkte 10395

Da es hier um REST geht, reicht es nicht aus, nur die Anfragemethode vom Server zu erhalten. Sie müssen auch RESTful-Routenparameter erhalten. Der Grund für die Trennung von RESTful-Parametern und GET/POST/PUT-Parametern ist, dass eine Ressource ihre eigene eindeutige URL zur Identifizierung haben muss.

Hier ist eine Möglichkeit, RESTful-Routen in PHP mit Slim zu implementieren:

https://github.com/codeguy/Slim

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

Und konfigurieren Sie den Server entsprechend.

Hier ein weiteres Beispiel mit 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');

9voto

Juned Ansari Punkte 4656

Es ist sehr einfach, verwenden Sie einfach $_SERVER['REQUEST_METHOD'];

Ejemplo:

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

8voto

Shaan Ansari Punkte 374

In core php kann man das so machen:

<?php

$method = $_SERVER['REQUEST_METHOD'];

switch ($method) {
  case 'GET':
    //Here Handle GET Request
    echo 'You are using '.$method.' Method';
    break;
  case 'POST':
    //Here Handle POST Request
    echo 'You are using '.$method.' Method';
    break;
  case 'PUT':
    //Here Handle PUT Request
    echo 'You are using '.$method.' Method';
    break;
  case 'PATCH':
    //Here Handle PATCH Request
    echo 'You are using '.$method.' Method';
    break;
  case 'DELETE':
    //Here Handle DELETE Request
    echo 'You are using '.$method.' Method';
    break;
  case 'COPY':
      //Here Handle COPY Request
      echo 'You are using '.$method.' Method';
      break;

  case 'OPTIONS':
      //Here Handle OPTIONS Request
      echo 'You are using '.$method.' Method';
      break;
  case 'LINK':
      //Here Handle LINK Request
      echo 'You are using '.$method.' Method';
      break;
  case 'UNLINK':
      //Here Handle UNLINK Request
      echo 'You are using '.$method.' Method';
      break;
  case 'PURGE':
      //Here Handle PURGE Request
      echo 'You are using '.$method.' Method';
      break;
  case 'LOCK':
      //Here Handle LOCK Request
      echo 'You are using '.$method.' Method';
      break;
  case 'UNLOCK':
      //Here Handle UNLOCK Request
      echo 'You are using '.$method.' Method';
      break;
  case 'PROPFIND':
      //Here Handle PROPFIND Request
      echo 'You are using '.$method.' Method';
      break;
  case 'VIEW':
      //Here Handle VIEW Request
      echo 'You are using '.$method.' Method';
      break;
  Default:
    echo 'You are using '.$method.' Method';
  break;
}

?>

7voto

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

Auf diese Weise können Sie auch in zend framework 2 auch erreichen. Danke.

3voto

Karol Sobański Punkte 437

Es ist wichtig, zusätzlich zu beachten, dass PHP alle $_GET Parameter, auch wenn Sie eine richtige Anfrage eines anderen Typs senden.

Die Methoden in den obigen Antworten sind völlig korrekt, aber wenn Sie zusätzlich prüfen wollen, ob GET Parameter bei der Handhabung POST , DELETE , PUT usw. anfordern, müssen Sie die Größe der $_GET Array.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X