I am planning to create a restful web service (PHP).
api/user
api/user/[id]
api/ad
api/ad/[id];
etc
are “user” and “ad” actual php files? and if not how can i tell (on my php file) which one the caller is calling “user” or “ad”?
any good tutorial on how to create a restful web service?
Most tutorials only cover the basics of rest web services.
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:
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
$_GETand$_POSTvariables but not e.g.$_PUT/$_DELETEand 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. withfile_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):