Download the PHP package jonathansilva/nano without Composer
On this page you can find all versions of the php package jonathansilva/nano. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package nano
Nano
Nano framework PHP para desenvolvimento de API's e aplicações Web
Requisitos
- Composer
- PHP >= 8.4.0
- MySQL
Certifique-se de que as extensões abaixo, estejam habilitadas no php.ini
- extension=pdo_mysql
- extension=mbstring
- extension=curl
Instalação
composer require jonathansilva/nano
Configuração
Apache
Nginx
.env.example
Duplique o arquivo, renomeie para .env e altere os valores
.gitignore
index.php
Routes
Verbos: GET, POST, PUT, PATCH e DELETE
O Callback/Controller não permite chamada de método
❌
✔️
Crie o método 'handle'
Routes file
Para carregar um arquivo de rotas, utilize o método 'load'
routes.xml
Middleware
Middlewares devem ser informados no terceiro parâmetro da rota ( Routes )
Para configurar um middleware global, utilize o método 'use'
Veja abaixo alguns exemplos de middlewares
Assert Middleware
Middleware global que faz proteção contra CSRF e decodifica o payload do JWT
CSRF
Os formulários deverão ter um campo 'hidden' chamado 'csrf'
O uso do CSRF necessita do
session_start();
no index.php
JWT
1 ) Se o token existir mas for inválido:
[ Web ] Redireciona para a página 'login'
[ API ] Retorna 'Invalid or expired token'
Caso for válido, o payload será enviado para o próximo middleware ou controller, podendo ser recuperado usando $req->query()
( veja um exemplo em Role Middleware )
2 ) Se não existir, vai para o próximo middleware ou executa o controller
O terceiro parâmetro em
JWT::assert
é ignorado em rotas de api
Ensure Middleware
Será chamado em rotas onde a autenticação é obrigatória
Se não encontrar o token:
[ Web ] Redireciona para a página 'login'
[ API ] Retorna 'Authorization token not found in request'
A criação dos middlewares Assert e Ensure, obriga que as rotas de api, tenham o prefixo '/api/' para evitar redirecionamento
O terceiro parâmetro em
JWT::ensure
é ignorado em rotas de api
Role Middleware
Será chamado em rotas onde o usuário precisa ter níveis de acesso específicos
Coloque após o 'Ensure'
Query params
localhost:8080/books?filter=price
cURL
Verbos: GET, POST, PUT, PATCH e DELETE
Validator
Regras: required, string, integer, float, bool, email, confirmed, min e max
Caso não houver erros na validação, um novo objeto será retornado em
$req->data()
com os dados sanitizados
O uso do confirmed
exige um novo input, onde o 'name' precisa ter o sufixo '_confirmation'
Por padrão, as mensagens de erro estão em português. As opções aceitas são 'pt-BR' e 'en-US'
JSON Exception
Use throwJsonException
para exibir erros no formato json
Template engine
O template utilizado foi desenvolvido por David Adams ( https://codeshack.io )
Foram feitas pequenas alterações no código original
base.html
home.html
Crie o diretório 'views'
Exibindo os erros de validação ( Validator )
Para saber mais sobre este template engine, clique aqui
CORS
Coloque no index.php de sua API e faça as modificações necessárias
Login / Register
Exemplo de login e cadastro de usuário
GET /cadastro
POST /cadastro
Ao usar Cookie para salvar o JWT, nomeie-o de 'token'. Isso é necessário pois há funções na classe JWT, que busca, verifica e remove o cookie pelo nome 'token'
Service
GET /login
POST /login
Service
GET /logout
GET /me