O documento apresenta como criar uma API RESTful usando o micro-framework PHP Respect. Ele descreve como instalar as dependências do Respect como Config, Relational e Validation e configurar um projeto de exemplo chamado RestBeer para gerenciar recursos de cerveja. Também mostra como implementar rotas para listar, criar, atualizar e remover cervejas usando validação e mapeamento de objetos relacionais.
2. Ivan Rosolen
Graduado em sistemas de Informção
Pós-graduado em Gerência de Projetos
Desenvolvedor a 10+ anos
Autor de vários PHPT (testes para o PHP)
Gerente de Projetos na Arizona
5. "[] conjunto de rotinas e padrões
estabelecidos por um software para a
utilização das suas funcionalidades por
aplicativos que não pretendem envolver-se
em detalhes da implementação do software,
mas apenas usar seus serviços []"
Wikipedia
11. API de informações de Ceveja!
http://restbeer.local/cervejas/
http://restbeer.local/cervejas/Guinness
http://restbeer.local/cervejas/Heineken
http://restbeer.local/cervejas/Skol
17. .htaccess
RewriteEngine On
# Redirect all requests not pointing at an actual file to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
21. ‣ Apenas arquivos .INI
‣ Usa o mesmo parser nativo e rápido do php.ini
‣ Extende o arquivo .INI com seu próprio “dialeto”
‣ Implementa lazy loading para instancias de objeto
‣ Arquivo config.ini:
db_name = "restbeer.db"
dsn = "sqlite:[db_name]"
‣ Utilização:
use RespectConfigContainer;
/**
* Ler arquivo de configuração
*/
$config = new Container('config.ini');
echo $config->dsn; // sqlite:restbeer.db
‣ http://github.com/Respect/Config
23. ‣ Quase zero de configuracão
‣ Fluent interface: $mapper->author[7]->fetch();
‣ Se adapta a diferentes databases
‣ Registros são tratados como Plain Data Object
‣ Dependência: RespectData (http://github.com/Respect/Data)
‣ Utilização:
use RespectRelationalMapper;
// Criar instância PDO com o SQLite
// diretório precisa ter permissão de escrita também o.O
$mapper = new Mapper(new PDO('sqlite:database.sq3'));
// buscar todos os autores
$authors = $mapper->author->fetchAll();
// gravar um autor
$obj = new stdClass;
$obj->name = 'Ivan Rosolen';
$mapper->author->persist($obj);
$mapper->flush();
‣ http://github.com/Respect/Relational
27. ‣ Thin and lightweight controller para aplicações RESTful e APIs
‣ Curva de aprendizado pequena
‣ Ótima documentação em português: http://www.cssexperts.net/respect-rest-docs-br/
‣ Utilização:
use RespectRestRouter;
// Criar instância do router
$router = new Router; // raiz http://example.com/
// instância para trabalhar em uma subpasta
$router = new Router('/pasta'); // raiz http://example.com/pasta
// Olá mundo
$router->get('/', function() {
return 'Hello World';
});
‣ https://github.com/Respect/Rest
29. // autoload do composer
require 'vendor/autoload.php';
use RespectRestRouter;
use RespectConfigContainer;
use RespectValidationValidator as v;
use RespectRelationalMapper;
use RespectDataCollectionsCollection;
/**
* Ler arquivo de configuração
*/
$config = new Container('config.ini');
/**
* Criar instância PDO com o SQLite usando as configs
*/
// diretório precisa ter permissão de escrita também
$mapper = new Mapper(new PDO($config->dsn));
// Criar instância do router
$router = new Router();
/**
* Rota para qualquer tipo de request (any)
*/
$router->any('/', function () {
return 'RestBeer!';
});