Well, for simple services, you have a single script file (e.g. named index.php
) as the entry point that dispatches the various paths to your functions (which may of course be in other PHP files).
It is called with one of the paths you mentioned appended after the script's name.
In the script, you can use $_SERVER['PATH_INFO']
to determine the that path.
You could experiment with this a little by making a script with only this content in it:
<?php
phpinfo();
?>
If you request this script in a browser from your web server, you will see all relevant data printed in a nice list. Scroll down to the PHP Variables section to see your PATH_INFO
.
See http://php.net/manual/en/reserved.variables.server.php
EDIT2:
Additionally, restricting access methods to HTTP GET and POST makes your life easier because PHP has $_GET
and $_POST
variables but not e.g. $_PUT
/ $_DELETE
and the like.
However, you could send POST requests with a special variable specifying the method so to emulate PUT, DELETE, HEAD or OPTIONS operations (e.g. _method=PUT
).
When supporting other methods than GET and POST, use $_SERVER['REQUEST_METHOD']
to determine the method used and read the data sent along with the request from the special "file" php://input
(e.g. with file_get_contents('php://input')
).
EDIT:
As tdammers noted, Apache RewriteRules are useful to make your URLs pretty, in this case to hide the script's name like this (depends on your script's location, of course):
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/api/index\.php(/|$)
RewriteRule ^/api/(.*)$ /api/index.php/$1 [QSA,L]