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).

Modifier cette page sur GitHub