PHP code example of bonuscred / api-manager

1. Go to this page and download the library: Download bonuscred/api-manager library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

bonuscred / api-manager example snippets


$app = new ApiManager\Server\App;

$app->use('/', function(){
    echo 'Hello World';
});

$app->get('/some-get-route', function($req, $res){
    echo 'Call GET: /some-get-route';
});

$app->post('/some-post-route', function($req, $res){
    echo 'Call POST: /some-post-route';
});

$app->all('/some-route', function($req, $res){
    echo 'Call: /some-route';
});

$app->run();

$app = new ApiManager\Server\App;

$cont = $app->use('/', function(){});
$cont->onStart(function($req, $res){
    //Executa callback antes da execução do container
});
$cont->onSuccess(function($req, $res){
    //Executa callback se o container resolveu com sucesso
});
$cont->onError(function($req, $res, $err){
    //Executa callback se o container encontrou algum erro
    //$err é uma extensão de Throwable   
});
$cont->onResolved(function($req, $res){
    //Executa callback ao finalizar container  
});

$app = new ApiManager\Server\App;

$app->use('/api', function(){})
    ->alias('/oldapi');

$app = new ApiManager\Server\App;

$app->redirect('/path/to/be/redirected', 'https://google.com.br', 302);

// Recebe como parâmetro um boleano(true como valor padrão) 
// para informar se o router deve resolver apenas a primeira rota encontrada
// ou todas as rotas compatíveis com o método e url
$router = new ApiManager\Context\Router\Router(true);

$router->get('/myroute', function($req, $res, $args){
            $response->status(200)
                    ->json(['success' => true]);
        });
$router->post('/my-post-route', [MyController::class, 'index']);
//Só execetada se router permitir execução de todas as correspondências
$router->get('/myroute', [MyController::class, 'index']);

$app = new ApiManager\Server\App;
$app->use('/', $router);
$app->run();

$router = new ApiManager\Context\Router\Router(true);

$router->group('/mygroup', function($group){
    //Executa um callback para chamadas com método GET do grupo
    $group->map('GET', '/', function($req, $res, $args){
        $req->setBodyParam('method_get_on_group', true);    
    });

    $group->get('/myroutegroup', ['MyController', 'index']);
    $group->post('/myroutegroup', ['MyController', 'index']);
    
    //Adiciona rota com Middlaware dentro do grupo
    $group->get('/myroutegroup/{id}', ['MyController', 'index']);
    // Passando middleware global para todas as rotas do grupo
    $group->middleware(MyMiddleware::class);
});



use ApiManager\Extension\MiddlewareExtension;
use ApiManager\Http\Request;
use ApiManager\Http\Response;

class MyMiddleware implements MiddlewareExtension{
    
    public function handle(Request $req, Response $res, \Closure $next){
        $authorization = $req->getHeaderLine('Authorization');

        if(!$authorization){
            throw new Exception('Header Authorization não enviado.');
        }

        //Executa o próximo middleware da fila
        $next($req, $res);
    }
}

$router = new ApiManager\Context\Router\Router;

//Middleware global para todas as rotas
$router->middleware(MyMiddleware::class);

//Middleware em rota específica
$router->get('/myroute', ['MyController', 'index'], [MyMiddleware::class]);

$router->group('/mygroup', function($group){
    //Middleware global para todas as rotas do grupo
    $group->middleware(MyMiddleware::class);
    
    //Middleware em rota específica do grupo
    $group->get(
        '/myroutegroup/{id}', 
        ['MyController', 'index'], 
        [MyMiddleware::class]
    );    
});



use ApiManager\Http\Request;
use ApiManager\Http\Response;

function meuControlador(Request $req, Response $res, $args){
    $args['route_path']   = $req->originalUrl();
    $args['route_method'] = $req->httpMethod();
    
    $res->status(200)->json($args);
}



use ApiManager\Extension\ControllerExtension;
use ApiManager\Http\Request;
use ApiManager\Http\Response;

class MyController implements ControllerExtension{
    
    public static function index(Request $req, Response $res, $args = []){
        $args['route_path']   = $req->originalUrl();
        $args['route_method'] = $req->httpMethod();
        
        $res->status(200)->json($args);
    }

}