Apify lets you design URLs however you want, with no limitations.
The Apify request object parses the URL to determine the value of the controller and action keys before dispatching the incoming request. It supports Web Services and RESTful Web Services.
Web Services
/?method=users /?method=users.show&id=1
Clean URL scheme:
/users /users/1 /users/1/update
To implement a clean URL scheme you need to enable URL rewriting and add at least one route:
$routes[] = new Route('/users/:id', array( 'controller' => 'users', 'action' => 'show' ) ); $routes[] = new Route('/users/:id/:action', array( 'controller' => 'users' ), array( 'action' => '(update|destroy)', 'page' => '\d+' ) ); $request = new Request(); $request->enableUrlRewriting(); $request->addRoutes($routes); $request->dispatch();
RESTful Web Services
GET /?method=users GET /?method=users&id=1 POS /?method=users PUT /?method=users&id=1 DEL /?method=users&id=1
Clean URL scheme:
GET /users GET /users/1 POS /users PUT /users/1 DEL /users/1
To enable this functionality:
$request = new Request(); $request->enableUrlRewriting(); $request->enableRestfulMapping(); $request->dispatch();
Relative URLs
By default, the request object uses the URL path to determine the route. If you are using relative URLs, you can configure the request object to rewrite the original URL path. For example:
URL path: /api/users/1
// rewrite to /users/1 $request->setUrlSegment(1);
URL path: /api/v1/users/1
// rewrite to /users/1 $request->setUrlSegment(2);
This allows you to manage several different applications using a common installation:
<VirtualHost *> ServerName www.mysite.com # ... # App 1 <Location "/api/v1"> SetEnv APP_NAME app1 SetEnv URL_SEGMENT 2 </Location> # App 2 <Location "/api/v2"> SetEnv APP_NAME app2 SetEnv URL_SEGMENT 2 </Location> </VirtualHost>
And, in your index.php file:
define('APP_DIR', dirname(__FILE__) . '/' . $_SERVER['APP_NAME']); try { $request = new Request(); $request->setUrlSegment($_SERVER['URL_SEGMENT']); $request->enableUrlRewriting(); $request->dispatch(); } catch (Exception $e) { $request->handleException($e); }
Comments
Use this form to add corrections, additions and suggestions about the documentation on this page. If you encounter any problems, please use the GitHub issue tracker.