Desenvolvedor Frontend


HTML
>
PHP
Sugestão de presentes para amigos baseado no perfil do facebook
Application Programming Interface
HTTP Status Code: 200
{
error: {
message: "Malformed access token <token>",
type: "OAuthException",
code: "190"
}
}HTTP Status Code: 401
{
status: "401",
message: "Authenticate",
code: 20003,
info: "http://www.twilio.com/docs/errors/20003"
}
<?php
//instancie o objeto
$app = new \Slim\Slim();
//defina a rota
get('/', function () {
echo "Hello, World!";
});
//rode a aplicação Slim
$app->run();
<?php
$app->get('/users', function() use ($app) {
# Renderiza a view
$app->render('users.php');
});
$app->get('/users/:id', function($id) use ($app) {
$profile = ModelUsers::getUserByID($id);
# Renderiza a view com algum dado
$app->render('profile.php', array(
'profile' => $profile,
'view' => true
)
);
});
<?php
/**
* Utilizando uma única rota para mapear múltiplos
* métodos HTTP usando a função map()
*/
$app->map('/users/validate', function() {
})->via('GET', 'POST');
<?php
/**
* O Slim permite tratar mensagens de erro
* e enviar a resposta HTTP apropriada
*/
$app->get('/denied', function() use ($app) {
# Cria a mensagem de erro
$errorData = array('error' => 'Permission Denied');
# Retorna o status 403 do HTTP
$app->render('error.php', $errorData, 403);
# Podemos também enviar
$app->halt(403, 'Permission Denied');
});

<?php
use Respect\Rest\Router;
$roteador = new Router;
$roteador->get('/users/*', function($userName) {
return 'Hello '. $userName;
});
<?php
$roteador->get(array('/user/*', '/users/*'), function($userName) {
return 'Hello '. $userName;
});
<?php
/**
* Utilizando uma única rota para mapear múltiplos
* métodos HTTP usando a função any()
*/
$roteador->any('/users/*', function($id) {
return "RestAPI";
/* Você pode usar o $_SERVER['REQUEST_METHOD']
* para verificar o tipo de requisição foi feita
*/
});
<?php
use Respect\Rest\Router;
use Respect\Config\Container;
use Respect\Validation\Validator as v;
use Respect\Relational\Mapper;
use Respect\Data\Collections\Collection;
/**
* 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();
Respect\Rest\Router;
Respect\Config\Container;
Respect\Validation\Validator as v;
Respect\Relational\Mapper;
Respect\Data\Collections\Collection;
<?php
// Rota para listar informações de uma cerveja ou todas
$router->get('/beers/*', function ($data) use ($mapper) {
// Validar com negação se string esta preenchida
if ( !isset($data) ) {
$cervejas = $mapper->cervejas->fetchAll();
header('HTTP/1.1 200 Ok');
return $cervejas;
}
// tratar os dados
$data = filter_var( $data, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
// validar conteúdo
if ( v::not(v::alnum()->notEmpty())->validate($data) ) {
header('HTTP/1.1 404 Not Found');
return 'Não encontrada';
}
// buscar cerveja por id
if ( v::int()->validate( $data ) ) {
// buscar cerveja por id
$cerveja = $mapper->cervejas[$data]->fetch();
} else {
// buscar cerveja pelo nome
$cerveja = $mapper->cervejas(array( 'nome' => $data ))->fetch();
}
if ( !$cerveja ) {
header('HTTP/1.1 404 Not Found');
return 'Não encontrada';
}
header('HTTP/1.1 200 Ok');
return $cerveja;
});
<?php
$router->post('/beers', function () use ($mapper) {
//pega os dados via $_POST
if ( !isset($_POST) || !isset($_POST['cerveja']) || v::not(v::arr())->validate($_POST['cerveja']) ) {
header('HTTP/1.1 400 Bad Request');
return 'Faltam parâmetros';
}
// Validar o input
$validation = v::arr() // validar se é array
->key('nome', $rule = v::alnum()->notEmpty()->noWhitespace()) // validar a key 'nome' se não está vazia
->key('estilo', $rule) // utilizando a mesma regra da key de cima
->validate($_POST['cerveja']);
if ( !$validation ) {
header('HTTP/1.1 400 Bad Request');
return 'Faltam parâmetros';
}
// tratar os dados
$cerveja = new stdClass();
$cerveja->nome = filter_var($_POST['cerveja']['nome'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$cerveja->estilo = filter_var($_POST['cerveja']['estilo'], FILTER_SANITIZE_FULL_SPECIAL_CHARS);
// buscar cerveja pelo nome para ver se já existe
$check = $mapper->cervejas(array( 'nome' => $cerveja->nome ))->fetch();
if ( $check ) {
header('HTTP/1.1 409 Conflict');
return 'Cerveja já existe no sistema';
}
// gravar nova cerveja
$mapper->cervejas->persist($cerveja);
$mapper->flush();
// verificar se gravou
if ( !isset($cerveja->id) || empty($cerveja->id) ) {
header('HTTP/1.1 500 Internal Server Error');
return 'Erro ao inserir cerveja';
}
//redireciona para a nova cerveja
header('HTTP/1.1 201 Created');
return 'Cerveja criada';
});
<?php
$router->put('/beers/*', function ($nome) use ($mapper) {
//pega os dados
parse_str(file_get_contents('php://input'), $data);
if ( !isset($data) || !isset($data['cerveja']) || v::not(v::arr())->validate($data['cerveja']) ) {
header('HTTP/1.1 400 Bad Request');
return 'Faltam parâmetros';
}
// Validar o input
$validation = v::arr() // validar se é array
->key('nome', $rule = v::alnum()->notEmpty()->noWhitespace()) // validar a key 'nome' se não está vazia
->key('estilo', $rule) // utilizando a mesma regra da key de cima
->validate($data['cerveja']);
if ( !$validation ) {
header('HTTP/1.1 400 Bad Request');
return 'Faltam parâmetros';
}
// tratar os dados
$nome = filter_var( $nome, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
// validar conteúdo
if ( v::not(v::alnum()->notEmpty())->validate($nome) ) {
header('HTTP/1.1 404 Not Found');
return 'Não encontrada';
}
// buscar cerveja pelo nome
$cerveja = $mapper->cervejas(array( 'nome' => $nome ))->fetch();
if ( !$cerveja ) {
header('HTTP/1.1 404 Not Found');
return 'Não encontrada';
}
// tratar os dados
$newNome = filter_var( $data['cerveja']['nome'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
$newEstilo = filter_var( $data['cerveja']['estilo'], FILTER_SANITIZE_FULL_SPECIAL_CHARS );
//Persiste na base de dados ($mapper retorna objeto preenchido full)
$cerveja->nome = $newNome;
$cerveja->estilo = $newEstilo;
$mapper->cervejas->persist($cerveja);
$mapper->flush();
header('HTTP/1.1 200 Ok');
return 'Cerveja atualizada';
});
<?php
$router->delete('/beers/*', function ($nome) use ($mapper) {
// tratar os dados
$nome = filter_var( $nome, FILTER_SANITIZE_FULL_SPECIAL_CHARS );
// Validar com negação se string esta preenchida
if ( !isset($nome) || v::not(v::alnum()->notEmpty())->validate($nome) ) {
header('HTTP/1.1 400 Bad Request');
return 'Faltam parâmetros';
}
// verificar se existe a cerveja pelo nome
$cerveja = $mapper->cervejas(array( 'nome' => $nome ))->fetch();
// BONUS - podemos buscar por id também
// $cerveja = $mapper->cervejas[$id]->fetch();
if ( !$cerveja ) {
header('HTTP/1.1 404 Not Found');
return 'Não encontrada';
}
$mapper->cervejas->remove($cerveja);
$mapper->flush();
header('HTTP/1.1 200 Ok');
return 'Cerveja removida';
});
<?php
$jsonRender = function ($data) {
header('Content-Type: application/json');
if ( v::string()->validate($data) ) {
$data = array($data);
}
return json_encode($data,true);
};
$router->always('Accept', array('application/json' => $jsonRender));
http://futuring.com.br