← All examples

HTTP server

Serve an API with http.serve. The handler receives method, path, query, and body, and returns a string. A leading status code sets the HTTP status; responses starting with { or [ are sent as JSON automatically.

import http
import strings
import json

fn handle(method: string, path: string, query: string, body: string): string {
    if path == "/health" {
        return "{\"status\": \"ok\"}"
    }

    if path == "/echo" && method == "POST" {
        return body
    }

    if path == "/greet" {
        let name = "World"
        if strings.contains(query, "name=") {
            let parts = strings.splitN(query, "name=", 2)
            name = parts[1]
        }
        let data: json = {message: "Hello"}
        return json.setString(data, "message", "Hello, " + name + "!")
    }

    return "404 Not Found"
}

http.serve(8080, handle)

Try it:

$ langoost run server.goost
$ curl localhost:8080/health
{"status": "ok"}
$ curl "localhost:8080/greet?name=Ada"
{"message":"Hello, Ada!"}
#http#backend · View as Markdown