1) Nie, jeśli użyć relaksującego ram jak RecessPHP lub jeśli używasz reguły mod_rewrite w pliku .htaccess aby przekierować wszystkie żądania API do pojedynczego pliku PHP (znany jako kontrolera frontowego).
.htaccess
RewriteEngine On
RewriteRule ^/api/ api.php
api.php
$request = $_SERVER['REQUEST_URI']; //this would be /users/show/abc.json
2) Można użyć modułu przepisywania Apache przekierować wszystkie żądania API specjalny Plik PHP, który je obsługuje. W zależności od konfiguracji apache, oryginalny żądany (RESTful) adres URL będzie przechowywany w zmiennej serwerowej w PHP, uważam, że jest to $_SERVER['REQUEST_URI']
. Oczywiście można również po prostu przekazać zmienną $_GET[]
do PHP zawierającą URL REST.
.htaccess
RewriteEngine On
RewriteRule ^/api/([^\.]+).(xml|json|atom) api.php?url=$1&type=$2
api.php
$request_parts = explode('/', $_GET['url']); // array('users', 'show', 'abc')
$file_type = $_GET['type'];
$output = get_data_from_db(); //Do your processing here
//You can outsource to other files via an include/require
//Output based on request
switch($file_type) {
case 'json':
echo json_encode($output);
break;
case 'xml':
echo xml_encode($output); //This isn't a real function, but you can make one
break;
default:
echo $output;
}
3) Twitter (i wiele innych API) to wykorzystać, ponieważ jest to wygodny sposób dostarczanie formatu oczekiwanego przez aplikację z interfejsu API. Wszystkie żądania API są przekierowywane do pojedynczego pliku PHP, który obsługuje tworzenie wszystkich plików i wysyłanie ich treści do wyjścia. Plik nigdy nie jest przechowywany na serwerze (chyba że jest buforowany).
dobrych zasobów
Wzmiankę o n RecessPHP. Jest to z pewnością świetne narzędzie i zachęcam do obejrzenia go (być może u źródła, aby uzyskać pojęcie o tym, jak to przetwarza rzeczy), ale to powiedziawszy, wydaje mi się to trochę nieostrożne. Fakt, że nazwy ścieżek są pisane w specjalnych komentarzach, wydaje mi się bardzo nie-PHP. Oddaliłbym się od tego i nie nazwałbym tego idealną ramą, ale to na pewno początek. Powodzenia!
Czyste adresy URL nie mają nic wspólnego z usługą REST apis. To po prostu fajny sposób na upiększanie adresów URL, które w przeciwnym razie miałyby brzydkie ciągi zapytań. Zwykle są one implementowane za pomocą mod_rewrite, aby pobrać czysty adres URL i wewnętrznie przekształcić go z powrotem do wersji z ciągiem zapytań. –