Skip to content

Web Link

RFC 8288 (Web Linking) header parser.

The primary entry point is ParseLinkHeader, which takes a raw Link header string and returns an array of WebLink values or an InvalidLinkHeader error.

match ParseLinkHeader(raw_header)
| let links: Array[WebLink val] val =>
  for link in links.values() do
    env.out.print(link.target + " rel=" + link.rel())
  end
| let err: InvalidLinkHeader val =>
  env.err.print("Parse error: " + err.string())
end

For simple use cases like HTTP API pagination, WebLink.rel() provides direct access to the required rel parameter. Use WebLink.param() for other parameters (type, hreflang, title, etc.).

Limitations

Multiple hreflang values on a single link (RFC 8288 allows repeated hreflang parameters) are not supported; only the first occurrence is kept. RFC 8187 extended parameter decoding (e.g. title*) is not performed; the raw value is stored as-is.

Public Types