phpnova / rest
Library para el manejo de solocitudes HTTP
This package's canonical repository appears to be gone and the package has been frozen as a result. Email us for help if needed.
Installs: 142
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/phpnova/rest
Requires (Dev)
- composer/composer: ^2.5
This package is auto-updated.
Last update: 2023-12-29 15:22:55 UTC
README
- PHP ^8.2.0
- Servidor local, pueder xammp, wanserver, symfony
Se recomienda utilizar symfony para arrancar el servidor de pruebas
Configuiación
app.json
El archivo app.config contiene la configuración base del aplicactivo
{
"version": "1.0.0.BETA",
"src": "src/",
"files": "files/",
"databases": {
"my_db": {
"type": "mysql",
"timezone": "+00:00"
}
}
}
app.env.json
El archivo app.env.json contiene la cofiguiración de entorno al momento de ejecutar la apliación por lo tanto no se recomienda guardar este archivo en el repositorio, debido a que los datos varian en base al lugar donde se depliegue la apliacción.
El contenido hace referencias a los cors de la API y datos de conexión de la base de datos.
Si al momento de ejecutar al aplicación se detecta que el archiovo app.env.json no existe automaticamete se creara el archivo en base a la configuración inicial del app.json.
{
"cors": {
"/": "*"
},
"databases": {
"my_db": {
"host": "localhost",
"user": "root",
"password": "",
"database": "db_name"
}
}
}
Index.php
Entrada de la aplicación
Recuerde configurar su archivo .htaccess para apuntar las entradas de la url al index.php
Ejemplo basico
RewriteEngine On
RewriteRule ^(.*) index.php [L,QSA
<?php use Phpnova\Rest\AppConfig; use Phpnova\Rest\Application; use Phpnova\Rest\Routing\Router; require_once __DIR__ . '/vendor/autoload.php'; $app = new Application(); $app->use('/', fn() => require __DIR__ . '/app/router.php'); $app->setHandleRequest(require __DIR__ . '/app/Config/HandleResponse.php'); $app->setHandleError(require __DIR__ . '/app/Config/HandleErrors.php'); $app->setHandleException(require __DIR__ . '/app/Config/HandleException.php'); $app->run();
Definir rutas
Las rutas se definen mediante los metódos estaticos de la classe Phpnova\Rest\Routing\Router::class.
use Phpnova\Rest\Http\Request; use Phpnova\Rest\Http\Response; use Phpnova\Rest\Routing\Router; Router::get(path: 'hola-mundo', function(){ return "Hola mundo"; }); Router::post(path: 'hola-mundo', function(){ return "Hola mundo POST"; }); # Sub rutas Router::use('/saludar', function(){ Router::get('/', function() { return "Hola, ¿Como estas?"; }); # Con parametros en la ruta utilizaremos : mas el nombre Router::get('/:name', function(string $name){ return "Hola $name, ¿Como estas?"; }); });
Controladores
Los controladores son las funciones a ejecturtar por cada ruta, puden ser definidas al mometento de registar una ruta o hacer referencia a una clase que alamacena el metodo.
Ejemplo de una función
# En este haca la función se ejecutar para entrada `/saludar/:name/` # Ruta ingresada de prueba `/saludar/Johan/` function(){ return "Hola, ¿Como estas?"; } # Salia resultante: "Hola, ¿Como estas?"
Para acceder a los parametros de las definidos en la URL
# Si quicerarmos haceder al parametro de la ruta `:name`, # basta un parametro en la función con el mismo nombre function(string $name){ return "Hola $name, ¿Como estas?"; } # Salida resultante: "Hola Johan, ¿como estar?"
Para acceder a mas información de la consulta tendremos que definir un parametro con el tipo Phpnova\Rest\Http\Request.
function(Phpnova\Rest\Http\Request $req){ return "Hola"; }
Para cargar el contendio del body en un parametro de la función autilizaremos el atributo Phpnova\Rest\Http\Body antes del parametro al cual desamos cargar el contenido.
use Phpnova\Rest\Http\Body function(#[Body]mixed $body){ return $body; }
Cualquier parametro que haga referencia a una clase se se instaciara automaticamente por lo cual se recomienda no solicitar parametros en el constructor de la clase el corrector funcionamiento.