Serveur local & routes (API)
TON618 a un serveur HTTP intégré, sans dépendance externe (sockets bruts).
Mode simple — sert le même contenu à chaque requête :
ton.serve(8080, "<h1>Salut depuis TON618 !</h1>")
Mode routage — enregistre des gestionnaires par chemin et méthode, puis appelle serve(port) sans second argument. Chaque gestionnaire prend un seul argument, un ton.dict décrivant la requête :
{
method: "GET", // la méthode HTTP
path: "/user/42", // le chemin de la requête, sans la query string
query: {a: "1"}, // les paramètres de query string parsés, en dict
params: {id: "42"}, // les segments ":nom" capturés depuis le motif de route
body: "" // le corps brut de la requête (payload POST/PUT/...)
}
Le chemin d'une route peut contenir des segments :nom, capturés dans req["params"] :
ton.function utilisateurParId(req) {
ton.string id = req["params"]["id"]
return json({id: id})
}
ton.function recherche(req) {
ton.dict query = req["query"]
ton.string q = has(query, "q") ? query["q"] : ""
return "Tu as cherché : " + q
}
ton.function creerUtilisateur(req) {
print("Corps reçu : " + req["body"])
return json({ok: true})
}
ton.get("/user/:id", ton.utilisateurParId)
ton.get("/search", ton.recherche) // GET /search?q=kuro -> req["query"]["q"]
ton.post("/users", ton.creerUtilisateur)
ton.serve(8081)
Un gestionnaire renvoyant du ton.html est servi avec Content-Type: text/html ; tout le reste est servi en text/plain (utilise json(...) pour construire un corps de réponse JSON, qui reste du texte brut sur le fil — configure ton client pour attendre application/json si tu as besoin de cet en-tête précis). Un chemin sans route ou méthode correspondante renvoie 404. Le serveur est mono-thread et bloquant — il traite une requête à la fois (voir Limitations connues).