Skip to content

HTTP API ​

This page documents the core HTTP primitives in Vix.

It covers:

  • App
  • Routing methods
  • Request
  • Response

All examples are minimal and placed entirely inside main().


App ​

Header:

cpp
#include <vix.hpp>

Core type:

cpp
vix::App

Constructor ​

cpp
App app;

Run ​

cpp
app.run(8080);

Starts the HTTP server on the given port (blocking call).


Routing Methods ​

GET ​

cpp
app.get(path, handler);

POST ​

cpp
app.post(path, handler);

PUT ​

cpp
app.put(path, handler);

DELETE ​

cpp
app.del(path, handler);

Minimal Example ​

cpp
#include <vix.hpp>

using namespace vix;

int main()
{
  App app;

  app.get("/", [](Request&, Response& res) {
    res.send("Hello");
  });

  app.run(8080);
}

Request ​

Type:

cpp
vix::Request

Provides access to:

  • Path parameters
  • Query parameters
  • Headers
  • Body
  • JSON payload

Path parameter ​

cpp
req.param("id", "0");

Returns string value or fallback.


Query parameter ​

cpp
req.query_value("page", "1");

Headers ​

cpp
req.header("User-Agent");
req.has_header("Authorization");

Body ​

cpp
std::string body = req.body();

JSON ​

cpp
const auto& j = req.json();

Returns parsed JSON (high-level JSON layer).


Response ​

Type:

cpp
vix::Response

Controls HTTP output.


Status ​

cpp
res.status(201);
res.set_status(404);

Send text ​

cpp
res.send("Hello");

Send JSON ​

cpp
res.json({"message", "ok"});

Auto-send return ​

If a route handler returns:

  • std::string β†’ text response
  • JSON object β†’ JSON response

Example:

cpp
app.get("/auto", [](Request&, Response&) {
  return vix::json::o("message", "auto");
});

Behavior Notes ​

  • If res.send() or res.json() is called, returned values are ignored.
  • If nothing is sent, the handler must return a value.
  • Status defaults to 200 unless changed.
  • Handlers execute synchronously per request context.

Design Philosophy ​

The HTTP layer is:

  • Minimal
  • Explicit
  • Deterministic
  • Zero hidden middleware stack by default

You control exactly what happens in each handler.