parent
5d14cc808b
commit
2a8c3df424
@ -0,0 +1,40 @@
|
||||
# Create an API
|
||||
|
||||
## Route URLs to php files
|
||||
|
||||
Routing can be accomplished with a `.htaccess` file placed in your root directory for the app. This is not PHP related. It's actually something that is a part of Apache. We'll use this file to specify how our routes map to particular files.
|
||||
|
||||
First tell Apache to allow the ability to rewrite URLs so that they map to specific `.php` files:
|
||||
|
||||
```
|
||||
RewriteEngine On
|
||||
```
|
||||
|
||||
Now create a route that will map any `GET` request to `/people` to `people.php`
|
||||
|
||||
```
|
||||
RewriteCond %{REQUEST_METHOD} ^GET$
|
||||
RewriteRule ^people$ controllers/people.php?action=index
|
||||
```
|
||||
|
||||
Let's break down the various parts of the first line of the last chunk (`RewriteCond %{REQUEST_METHOD} ^GET$`):
|
||||
|
||||
- `RewriteCond`
|
||||
- this specifies that a rewrite will happen given the following condition
|
||||
- `%{REQUEST_METHOD}`
|
||||
- this tells apache to look at the request method (GET, POST, PUT/PATCH, DELETE) and compare it to something
|
||||
- `^GET$`
|
||||
- this is what the request method will be compared to. In this case, it's the regular expression `^GET$`. The `^` denotes the beginning of the string and the `$` denotes the end of it.
|
||||
- basically, it checks to see if the request method is GET
|
||||
|
||||
Now let's break down the second line (`RewriteRule ^people$ controllers/people.php?action=index`):
|
||||
|
||||
- `RewriteRule`
|
||||
- this tells Apache that a rewrite rule follows
|
||||
- `^people$`
|
||||
- again this is a regular expression where `^` denotes the beginning of the string and `$` denotes the end of the string
|
||||
- this says to map any request with a URL that matches `people` to the file that comes next
|
||||
- `controllers/people.php`
|
||||
- this is the "controller" file that we'll create shortly. It will handle all routes concerning people
|
||||
- `?action=index`
|
||||
- this says to pass a query parameter to that file called `action` with the value `index`. You'll see later that we'll use this to query parameter to determine which action (index, show, create, update, delete, etc...) to render
|
||||
Loading…
Reference in new issue