mirror of
https://github.com/arthur-pbty/PyRoute.git
synced 2026-06-03 23:36:22 +02:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
# PyRoute - Framework Python pour la création d'applications web
|
||||||
|
|
||||||
|
PyRoute est un framework Python simple qui permet de créer des applications web en gérant les routes et en renvoyant des réponses HTTP aux requêtes des utilisateurs. Ce framework a été conçu pour vous aider à comprendre les concepts de base de la gestion des routes dans une application web.
|
||||||
|
|
||||||
|
## Comment ça marche
|
||||||
|
|
||||||
|
PyRoute utilise des sockets pour écouter les requêtes HTTP entrantes et dispatche ces requêtes vers les fonctions de routage appropriées en fonction de l'URL demandée. Vous pouvez définir vos propres routes et leurs fonctions de traitement dans votre application.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
1. Clonez ce dépôt ou téléchargez le code source.
|
||||||
|
2. Assurez-vous que Python est installé sur votre système.
|
||||||
|
3. Exécutez `python serveur.py` pour démarrer le serveur.
|
||||||
|
4. Accédez à l'application en utilisant un navigateur web.
|
||||||
|
|
||||||
|
## Pratique
|
||||||
|
|
||||||
|
Vous n'avez plus qu'a creer des nouvelle views ainssi que leur route et controller pour dévelloper votre application web.
|
||||||
|
|
||||||
|
## Contribuer
|
||||||
|
Les contributions sont les bienvenues ! Si vous souhaitez améliorer ce framework ou ajouter des fonctionnalités, n'hésitez pas à créer une demande de tirage (pull request).
|
||||||
|
|
||||||
|
## Licence
|
||||||
|
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,8 @@
|
|||||||
|
from modules import page_html
|
||||||
|
|
||||||
|
|
||||||
|
def page_accueil():
|
||||||
|
return page_html('welcome')
|
||||||
|
|
||||||
|
def a_propos():
|
||||||
|
return "À propos de nous!"
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
def page_html(page):
|
||||||
|
with open(f'resources/views/{page}.html', 'r') as fichier_html:
|
||||||
|
res = fichier_html.read()
|
||||||
|
return res
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
python-dotenv==1.0.0
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello, World!</h1>
|
||||||
|
<a href="/a-propos">About</a>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
+52
@@ -0,0 +1,52 @@
|
|||||||
|
import socket
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
from route import *
|
||||||
|
from controller import *
|
||||||
|
|
||||||
|
load_dotenv()
|
||||||
|
listen = int(os.getenv("LISTEN"))
|
||||||
|
host = os.getenv("HOST")
|
||||||
|
port = int(os.getenv("PORT"))
|
||||||
|
|
||||||
|
def route(path):
|
||||||
|
if path in routes:
|
||||||
|
return globals()[routes[path]]
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
def create_server():
|
||||||
|
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
server_socket.bind((host, port))
|
||||||
|
server_socket.listen(listen)
|
||||||
|
print(f"Serveur en écoute sur http://{host}:{port}")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
client_socket, client_address = server_socket.accept()
|
||||||
|
request_data = client_socket.recv(1024).decode('utf-8')
|
||||||
|
request_lines = request_data.split('\r\n')
|
||||||
|
request_line = request_lines[0]
|
||||||
|
|
||||||
|
# Utilisez une expression régulière pour extraire l'URL demandée
|
||||||
|
match = re.match(r"GET (.+?) HTTP/1.1", request_line)
|
||||||
|
if match:
|
||||||
|
path = match.group(1)
|
||||||
|
else:
|
||||||
|
path = "/"
|
||||||
|
|
||||||
|
handler = route(path)
|
||||||
|
|
||||||
|
if handler is not None:
|
||||||
|
response_body = handler()
|
||||||
|
response_data = f"HTTP/1.1 200 OK\r\nContent-Length: {len(response_body)}\r\n\r\n{response_body}"
|
||||||
|
else:
|
||||||
|
response_body = "Page non trouvée"
|
||||||
|
response_data = f"HTTP/1.1 404 Not Found\r\nContent-Length: {len(response_body)}\r\n\r\n{response_body}"
|
||||||
|
|
||||||
|
client_socket.sendall(response_data.encode('utf-8'))
|
||||||
|
client_socket.close()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
create_server()
|
||||||
Reference in New Issue
Block a user