Skip to content

HTTP packaged

Use case: vpm project with registry dependency

Section titled “Use case: vpm project with registry dependency”

Shows the consumer path: vpm install, barrel import, and vow run with net grant.

Example source: vow-examples/vow-web-server/http_api_packaged/

name = "http-api-packaged"
version = "0.1.0"
[deps]
vow-web-server = { path = "../.." }

In your own project, pin the registry version:

[deps]
vow-web-server = "0.2.1"
import vws from vow_web_server
import vow_web_server.request
import vow_web_server.response
fn health(_req: request.Request) -> response.Response {
return vws.json("{\"ok\":true}");
}
fn main(caps: Caps) -> int {
let a = vws.get(vws.app(), "/health", health);
return match caps.net {
Some(cap) => vws.listen(a, cap, 8787),
None => 0 - 1,
};
}
Terminal window
cd vow-examples/vow-web-server/http_api_packaged
vpm install
vow run src/main.vow -- --grant net:
curl http://127.0.0.1:8787/health

Or scaffold from scratch:

Terminal window
curl -fsSL https://install.vowlang.dev | sh
vpm init my-api && cd my-api
vpm add vow-web-server@0.2.1
vpm install
# paste handler into src/main.vow
vow run src/main.vow -- --grant net:
Import Use
import vws from vow_web_server App, listen, json, get, …
import vow_web_server.request Typed request.Request in handlers
import vow_web_server.response Typed response.Response return
import vow_web_server.staticfiles Static files (separate module)

Package names normalize -_ (vow-web-servervow_web_server).