Shared HTTP Values

trb/http provides portable values shared by server and client packages. It does not start a server or send a request.

import { Body, Header, Headers, HttpMethod } from trb/http

method := HttpMethod.post()
headers := Headers.new([
	Header.new(name: "content-type", value: "application/json"),
	Header.new(name: "set-cookie", value: "theme=dark"),
	Header.new(name: "set-cookie", value: "session=abc"),
])
body := Body.new("{}".to_bytes())

puts(method.to_s())
puts(headers.first("Content-Type"))
puts(headers.values("set-cookie").size())
puts(body.to_s())

HttpMethod.new(value) accepts extension methods in addition to the named constructors. Headers preserves insertion order and repeated fields while performing lookup case-insensitively. Its with, add, and without methods return new values; entries() returns a copy. Body is the initial buffered body representation and exposes its portable Bytes through bytes().

trb/web uses these values for inbound requests and outbound server responses. trb/platform/typescript/browser uses them for browser requests and buffered Fetch responses. Query parameter encoding remains in trb/std/url.