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/
project.toml
Section titled “project.toml”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"src/main.vow
Section titled “src/main.vow”import vws from vow_web_serverimport vow_web_server.requestimport 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, };}cd vow-examples/vow-web-server/http_api_packagedvpm installvow run src/main.vow -- --grant net:curl http://127.0.0.1:8787/healthOr scaffold from scratch:
curl -fsSL https://install.vowlang.dev | shvpm init my-api && cd my-apivpm add vow-web-server@0.2.1vpm install# paste handler into src/main.vowvow run src/main.vow -- --grant net:Import styles
Section titled “Import styles”| 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-server ↔ vow_web_server).