clase 3
Es una implementación open source de un servidor HTTP.
POST /index.php?position=1 HTTP/1.1
Host: mihost.ejemplo.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 18
foo=Hola&bar=Mundo
PUT /index.php?position=1 HTTP/1.1
Host: mihost.ejemplo.com
Content-Type: application/json
Content-Length: 28
{"foo":"Hola","bar":"Mundo"}
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: nombre-cliente
HTTP/1.1 200 OK
Date: Fri, 31 Dec 2003 23:59:59 GMT
Content-Type: text/html
Content-Length: 1221
<html>
<body>
<h1>Página principal de tuHost</h1>
(Contenido)
.
.
.
</body>
</html>
#Necesario sólo para apache v2.2 o menor
NameVirtualHost *:80
#Necesario sólo para apache v2.2 o menor
NameVirtualHost *:80
<VirtualHost *:80>
ServerName app.ejemplo.com
ServerAlias www.app.ejemplo.com
DocumentRoot /path/a/archivos/html
</VirtualHost>
<VirtualHost *:80>
ServerName app.ejemplo.com
ServerAlias www.app.ejemplo.com
DocumentRoot /path/a/archivos/html
Alias /alias /path/a/alias
<Directory /path/a/alias>
Allow from all
</Directory>
</VirtualHost>
REST
Ejemplo de Recursos
Recurso | GET | POST | PUT | DELETE |
---|---|---|---|---|
/person | Listado de personas | Insertar una nueva persona | Actualizar la lista de personas | Eliminar todas las personas |
/person/123 | Representación de la persona con id 123 | Actualizar datos de la persona con id 123 | Eliminar la persona con id 123 | |
/person/123/comment | Listado de comentarios realizados por la persona 123 | Insertar un nuevo comentario realizado por la persona 123 | Actualizar la lista de comentarios realizados por la persona 123 | Eliminar todos los comentarios realizados por la persona 123 |
/person/123/comment/1 | Represenación del comentario con id 1 realizado por la persona 123 | Actualizar datos del comentario con id 1 realizado por la persona 123 | Eliminar el comentario con id 1 realizado por la persona 123 | |
/comment | Listado de comentarios de todas las personas | Insertar un nuevo comentario (debe incluir el id de la persona) | Actualizar la lista de comentarios de todas las personas | Eliminar todos los comentarios de todas las personas |
/comment/1 | Repressenación del comentario con id 1 | Actualizar datos del comentario con id 1 | Eliminar el comentario con id 1 |
<?php
$app = new \Slim\Slim();
$app->get('/hello/:name', function ($name) {
echo "Hello, $name";
});
$app->run();
Slim es un micro framework para PHP que nos facilita la creación de APIs
<?php
$app = new \Slim\Slim();
$app->post('/books', function () {
//Create book
});
$app->get('/books/:id', function ($id) {
//Show book identified by $id
});
$app->put('/books/:id', function ($id) {
//Update book identified by $id
});
$app->delete('/books/:id', function ($id) {
//Delete book identified by $id
});
$app->run();
<?php
$app = new \Slim\Slim();
// Obtener el cuerpo del requerimiento HTTP como String.
$body = $app->request->getBody();
// Obtener las variables que vienen en la URI,
// por ej: /index.php?variable1=valor1&variable2=valor2
$valor1 = $app->request->get('variable1');
$todasGet = $app->request->get();
// Obtener las variables que vienen en el cuerpo de una petición POST
// por ej: variable1=valor1&variable2=valor2
$valor1 = $app->request->post('variable1');
$todasPost = $app->request->post();
// Obtener las variables que vienen en el cuerpo de una petición PUT
// por ej: variable1=valor1&variable2=valor2
$valor1 = $app->request->put('variable1');
$todasPut = $app->request->put();
1. Instalar composer en la aplicación
curl -s https://getcomposer.org/installer | php
2. Crear el archivo comoser.json con el siguiente contenido:
{
"require": {
"slim/slim": "2.*"
}
}
3. Instalar a través de composer
php composer.phar install
4. Agregar al index.php de la api
<?php
require 'vendor/autoload.php';
En nuestra configuración de Apache, agregar dentro del tag <Directory>
<VirtualHost *:80>
ServerName app.ejemplo.com
ServerAlias www.app.ejemplo.com
DocumentRoot /path/a/archivos/html
Alias /alias /path/a/alias
<Directory /path/a/alias>
Allow from all
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</Directory>
</VirtualHost>
Tipo | GET | POST | PUT | DELETE |
---|---|---|---|---|
recurso/ | Obtener el listado de recursos | Insertar un nuevo recurso | Eliminar todos los recursos | |
recurso/:id | Obtener el detalle de recurso | Modificar datos del recurso | Eliminar el recurso |