An open API service indexing awesome lists of open source software.

https://github.com/maximo-perez-villalba/framework-http

El componente implementa una simple arquitectura HTTP en PHP con fines pedagógicos.
https://github.com/maximo-perez-villalba/framework-http

http php

Last synced: about 1 year ago
JSON representation

El componente implementa una simple arquitectura HTTP en PHP con fines pedagógicos.

Awesome Lists containing this project

README

          

# framework-http
La componente implementa una simple arquitectura HTTP orientada a objetos escrita en PHP.
Este proyecto tiene fines pedagógico.




## Instalación
Se puede instalar framework-http a través de Composer de dos formas:

1 **Desde una consola de comandos** ir al directorio del proyecto y ejecutar:
``` bash
composer require maximo-perez-villalba/framework-http
```

2 También **modificando manualmente el archivo composer.json**
``` json
"require": {
"maximo-perez-villalba/framework-http": ">=2.4.0"
},
```
2.1 Luego desde una consola de comandos ejecutar:
``` bash
composer update
```




## Como se usa

```php
HTTPRequestsRoutes::start( 'Ruta del archivo de configuración' );
HTTPRequestsRoutes::executeCurrentRequest();
HTTPRequestsRoutes::executeCurrentResponse();
```




## Documentación

### Mensajes HTTP
> Los mensajes HTTP son los medios por los cuales se intercambian datos entre servidores y clientes.
> Hay dos tipos de mensajes:
> * **_peticiones_** enviadas por el cliente al servidor para pedir el inicio de una acción
> * y **_respuestas_** que son la respuesta del servidor.
>
> Los mensajes HTTP están compuestos de texto, codificado en ASCII, y pueden comprender múltiples líneas.
> Fuente: [developer.mozilla.org: Mensajes HTTP](https://developer.mozilla.org/es/docs/Web/HTTP/Messages)




**Ejemplo de comunicación a través del protocolo HTTP**
```
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
```


Los clientes web realizan peticiones sobre los servidores web invocando una [URI](https://es.wikipedia.org/wiki/Identificador_de_recursos_uniforme) (Uniform Resource Identifier).

![URI = URL + URN](https://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/URI_Euler_Diagram_no_lone_URIs.svg/220px-URI_Euler_Diagram_no_lone_URIs.svg.png)
Siendo la URL la ubicación del servidor web y la URN la ubicación específica del recurso/acción que se solicita.

Los servidores web son sistemas preparados para escuchar los eventos de **solicitud de recursos** enviados por los clientes escrito con el protocolo HTTP a través de una conexión de red.
Existen dos tipos de recursos que pueden solicitar los clientes:
* **Recursos estáticos** cuya respuesta es simplemente devolver/transmitir el archivo. Los recursos estáticos son por ejemplo los archivos : HTML, PDF, videos, fotos, etc.
* **Recursos dinámicos** en este caso, el servidor delega la ejecución en el script apuntado. Pudiendo el script estar escrito en muchos lenguajes de programación como PHP, Java, NodeJS, CGI, ect.

## ¿Que problema resuelve?
Este componente permite controlar un conjunto de peticiones escritas con el protocolo HTTP.
Para poder funcionar la componente requiere tener registradas las peticiones que puede atender.

De manera tal que asocia la URN de la petición a una clase que ejecutaran acciones personalizadas.
El conjunto de peticiones son registradas y asociadas a un método en una clase en un archivo de configuración, siendo este archivo donde se define la API rest de la aplicación web.




![Figure: UML flowchart > HTTP Request Routes :: start](/docs/uml-flowchart-routes-start.png)
**Figure: _UML flowchart > HTTP Request Routes :: start_**


![Figure: UML flowchart > HTTP Request Routes :: set current request](/docs/uml-flowchart-routes-set-current-request.png)
**Figure: _UML flowchart > HTTP Request Routes:: set current request_**


![Figure: UML flowchart > HTTP Request Routes :: execute current request](/docs/uml-flowchart-routes-execute-current-request.png)
**Figure: _UML flowchart > HTTP Request Routes :: execute current request_**


![Figure: UML class > HTTP framework](/docs/uml-class-http-framework.png)
**Figure: _UML class > HTTP framework_**


![Figure: UML sequence > HTTP request routes :: start](/docs/uml-sequence-http-requests-routes-start.png)
**Figure: _UML sequence > HTTP request routes :: start_**


![Figure: UML sequence > HTTP request routes :: execute current request](/docs/uml-sequence-http-requests-routes-execute-current-request.png)
**Figure: _UML sequence > HTTP request routes :: execute current request_**