{"id":22790690,"url":"https://github.com/maximo-perez-villalba/framework-http","last_synced_at":"2025-03-30T16:45:16.926Z","repository":{"id":37298708,"uuid":"480638803","full_name":"maximo-perez-villalba/framework-http","owner":"maximo-perez-villalba","description":"El componente implementa una simple arquitectura HTTP en PHP con fines pedagógicos.","archived":false,"fork":false,"pushed_at":"2022-07-09T02:13:15.000Z","size":593,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-05T18:38:53.552Z","etag":null,"topics":["http","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maximo-perez-villalba.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-12T03:25:14.000Z","updated_at":"2022-04-14T18:19:11.000Z","dependencies_parsed_at":"2022-09-07T23:02:53.925Z","dependency_job_id":null,"html_url":"https://github.com/maximo-perez-villalba/framework-http","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximo-perez-villalba%2Fframework-http","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximo-perez-villalba%2Fframework-http/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximo-perez-villalba%2Fframework-http/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maximo-perez-villalba%2Fframework-http/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maximo-perez-villalba","download_url":"https://codeload.github.com/maximo-perez-villalba/framework-http/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246350939,"owners_count":20763228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["http","php"],"created_at":"2024-12-12T02:28:38.850Z","updated_at":"2025-03-30T16:45:16.896Z","avatar_url":"https://github.com/maximo-perez-villalba.png","language":"PHP","readme":"# framework-http\nLa componente implementa una simple arquitectura HTTP orientada a objetos escrita en PHP.      \nEste proyecto tiene fines pedagógico.    \n      \n\u003cbr\u003e     \n             \n## Instalación\nSe puede instalar framework-http a través de Composer de dos formas:      \n\n1 **Desde una consola de comandos** ir al directorio del proyecto y ejecutar:\n``` bash    \ncomposer require maximo-perez-villalba/framework-http\n```    \n\n2 También **modificando manualmente el archivo composer.json**\n``` json    \n\"require\": {\n  \"maximo-perez-villalba/framework-http\": \"\u003e=2.4.0\"\n},\n```    \n2.1 Luego desde una consola de comandos ejecutar:\n``` bash    \ncomposer update\n```    \n      \n\u003cbr\u003e     \n             \n## Como se usa\n\n```php\nHTTPRequestsRoutes::start( 'Ruta del archivo de  configuración' );\nHTTPRequestsRoutes::executeCurrentRequest();\nHTTPRequestsRoutes::executeCurrentResponse();\n```    \n      \n\u003cbr\u003e     \n             \n## Documentación\n\n### Mensajes HTTP\n\u003e Los mensajes HTTP son los medios por los cuales se intercambian datos entre servidores y clientes.    \n\u003e Hay dos tipos de mensajes: \n\u003e  * **_peticiones_** enviadas por el cliente al servidor para pedir el inicio de una acción \n\u003e  * y **_respuestas_** que son la respuesta del servidor.     \n\u003e     \n\u003e Los mensajes HTTP están compuestos de texto, codificado en ASCII, y pueden comprender múltiples líneas.      \n\u003e Fuente: [developer.mozilla.org: Mensajes HTTP](https://developer.mozilla.org/es/docs/Web/HTTP/Messages)     \n      \n\u003cbr\u003e   \n     \n**Ejemplo de comunicación a través del protocolo HTTP**    \n```    \nPOST / HTTP 1.1\nGET /background.png HTTP/1.0\nHEAD /test.html?query=alibaba HTTP/1.1\nOPTIONS /anypage.html HTTP/1.0\n```        \n      \n\u003cbr\u003e   \n\nLos clientes web realizan peticiones sobre los servidores web invocando una [URI](https://es.wikipedia.org/wiki/Identificador_de_recursos_uniforme)  (Uniform Resource Identifier).              \n\n![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)     \nSiendo la URL la ubicación del servidor web y la URN la ubicación específica del recurso/acción que se solicita.     \n\nLos 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.     \nExisten dos tipos de recursos que pueden solicitar los clientes:      \n*  **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. \n*  **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.\n\n     \n\n## ¿Que problema resuelve?    \nEste componente permite controlar un conjunto de peticiones escritas con el protocolo HTTP. \nPara poder funcionar la componente requiere tener registradas las peticiones que puede atender.\n\n\nDe manera tal que asocia la URN de la petición a una clase que ejecutaran acciones personalizadas.   \nEl 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.    \n\n      \n\u003cbr\u003e   \n     \n\n\n![Figure: UML flowchart \u003e HTTP Request Routes :: start](/docs/uml-flowchart-routes-start.png)    \n**Figure: _UML flowchart \u003e HTTP Request Routes :: start_**    \n\n\u003cbr\u003e\n\n![Figure: UML flowchart \u003e HTTP Request Routes :: set current request](/docs/uml-flowchart-routes-set-current-request.png)    \n**Figure: _UML flowchart \u003e HTTP Request Routes:: set current request_**    \n\n\u003cbr\u003e\n\n![Figure: UML flowchart \u003e HTTP Request Routes :: execute current request](/docs/uml-flowchart-routes-execute-current-request.png)   \n**Figure: _UML flowchart \u003e HTTP Request Routes :: execute current request_**      \n\n\u003cbr\u003e\n\n![Figure: UML class \u003e HTTP framework](/docs/uml-class-http-framework.png)     \n**Figure: _UML class \u003e HTTP framework_**      \n\n\u003cbr\u003e\n\n![Figure: UML sequence \u003e HTTP request routes :: start](/docs/uml-sequence-http-requests-routes-start.png)      \n**Figure: _UML sequence \u003e HTTP request routes :: start_**      \n\n\u003cbr\u003e\n\n![Figure: UML sequence \u003e HTTP request routes :: execute current request](/docs/uml-sequence-http-requests-routes-execute-current-request.png)      \n**Figure: _UML sequence \u003e HTTP request routes :: execute current request_**      \n\n\u003cbr\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximo-perez-villalba%2Fframework-http","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaximo-perez-villalba%2Fframework-http","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaximo-perez-villalba%2Fframework-http/lists"}