phpnova/rest 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phpnova/rest

Composer 安装命令:

composer require phpnova/rest

包简介

Library para el manejo de solocitudes HTTP

README 文档

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.

统计信息

  • 总下载量: 142
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: GPL-3.0-only
  • 更新时间: 2022-11-10

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固