PHPackages                             dr2gsistemas/xpress - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. dr2gsistemas/xpress

ActiveLibrary[HTTP &amp; Networking](/categories/http)

dr2gsistemas/xpress
===================

Router REST API ligero para PHP 8.4 con sintaxis estilo Express.js

v1.0.0(today)00MITPHPPHP ^8.4

Since Apr 3Pushed todayCompare

[ Source](https://github.com/DR2GSistemas/xpress)[ Packagist](https://packagist.org/packages/dr2gsistemas/xpress)[ Docs](https://github.com/dr2gsistemas/xpress)[ RSS](/packages/dr2gsistemas-xpress/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (3)Versions (2)Used By (0)

Xpress - Router REST API para PHP 8.4
=====================================

[](#xpress---router-rest-api-para-php-84)

Xpress es un router ligero para crear APIs REST con PHP 8.4, inspirado en la sintaxis de Express.js para Node.js. Utiliza atributos PHP para definir rutas de forma limpia y declarativa.

Características
---------------

[](#características)

- **Sintaxis estilo Express.js** - API familiar para desarrolladores de Node.js
- **Atributos PHP 8.4** - Definiciones de rutas limpias y declarativas
- **Sistema de middlewares encadenables** - Auth, logging, CORS, rate limiting, etc.
- **Compatible con PSR-7** - Totalmente compatible con el estándar de mensajes HTTP
- **Mínimo de dependencias** - Solo requiere `psr/http-message` y `guzzlehttp/psr7`
- **Helpers para respuestas rápidas** - Funciones globales para json(), text(), html(), etc.

Requisitos
----------

[](#requisitos)

- PHP 8.4 o superior
- `psr/http-message: ^2.0`
- `guzzlehttp/psr7: ^2.0`

Instalación
-----------

[](#instalación)

```
composer require azul/xpress
```

CLI - Herramienta de Línea de Comandos
--------------------------------------

[](#cli---herramienta-de-línea-de-comandos)

Xpress incluye un CLI para ayudarte con la configuración y desarrollo.

### Comandos Disponibles

[](#comandos-disponibles)

ComandoDescripción`xpress htaccess`Genera archivo .htaccess para Apache`xpress serve`Inicia servidor de desarrollo PHP`xpress init`Inicializa estructura de proyecto`xpress route:list`Lista rutas registradas`xpress help`Muestra ayuda### Generar .htaccess

[](#generar-htaccess)

```
# Generar .htaccess básico en public/.htaccess
xpress htaccess

# Con opciones
xpress htaccess --public=htdocs        # Directorio público personalizado
xpress htaccess --base=/api/v1         # Base path
xpress htaccess --entry=app.php        # Archivo de entrada
xpress htaccess --stdout               # Ver sin crear archivo
```

**Archivo .htaccess generado:**

```
# Xpress Router - Apache Configuration
RewriteEngine On

# Redirigir requests al index.php
RewriteCond %{REQUEST_URI} -f [OR]
RewriteCond %{REQUEST_URI} -d
RewriteRule ^ - [L]

RewriteRule ^ index.php [QSA,L]

# Security headers

    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-XSS-Protection "1; mode=block"

# Prevenir listing de directorios
Options -Indexes

# Cache estáticos

    ExpiresActive On
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"

```

### Iniciar Servidor de Desarrollo

[](#iniciar-servidor-de-desarrollo)

```
# Servidor básico
xpress serve

# Con opciones
xpress serve --port=3000          # Puerto personalizado
xpress serve --host=0.0.0.0       # Escuchar en todas las interfaces
xpress serve --public=htdocs      # Directorio público
```

Salida:

```
╔══════════════════════════════════════════════════════════╗
║                    Xpress Development Server              ║
╠══════════════════════════════════════════════════════════╣
║  URL:      http://localhost:8080                          ║
║  Document: /path/to/project/public                        ║
║  Entry:    index.php                                      ║
╠══════════════════════════════════════════════════════════╣
║  Presiona Ctrl+C para detener                           ║
╚══════════════════════════════════════════════════════════╝

```

### Inicializar Proyecto

[](#inicializar-proyecto)

```
# Crear estructura básica
xpress init

# Sobrescribir archivos existentes
xpress init --force
```

Crea:

```
├── public/
│   ├── .htaccess
│   └── index.php
├── src/
│   ├── controllers/
│   └── middleware/
├── bootstrap.php
├── .env.example
└── routes/
    └── web.php

```

### Listar Rutas

[](#listar-rutas)

```
# Ver rutas en formato tabla
xpress route:list

# Salida JSON
xpress route:list --json
```

Uso Básico
----------

[](#uso-básico)

### 1. Instalación con Composer y estructura del proyecto

[](#1-instalación-con-composer-y-estructura-del-proyecto)

```
mkdir mi-api && cd mi-api
composer require azul/xpress
```

```
mi-api/
├── composer.json
├── public/
│   └── index.php          # Entry point
├── src/
│   ├── Controllers/
│   │   └── UserController.php
│   └── Middlewares/
│       └── AuthMiddleware.php
└── vendor/

```

### 2. Punto de entrada (public/index.php)

[](#2-punto-de-entrada-publicindexphp)

```
