Documentation
¶
Overview ¶
Package hypermedia provides parsers that extract typed links from HTTP responses in various hypermedia formats (Link headers, HAL, TSJ, JSON:API, Siren). All URIs are resolved to absolute form before being returned.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type JSONAPIParser ¶
type JSONAPIParser struct{}
JSONAPIParser extracts links from the top-level `links` object. Requires either a `jsonapi` object or one of the JSON:API document members.
func (JSONAPIParser) ParseLinks ¶
type Link ¶
type Link struct {
Rel string // relation type, e.g. "next", "self"
URI string // always an absolute URI
}
Link is a normalized hypermedia link.
type LinkHeaderParser ¶
type LinkHeaderParser struct{}
LinkHeaderParser extracts links from HTTP Link headers. Example: Link: <https://api.example.com/page2>; rel="next"
func (LinkHeaderParser) ParseLinks ¶
type Parser ¶
type Parser interface {
// ParseLinks returns all links it can find. Implementations return nil
// when they cannot recognise the format.
ParseLinks(baseURL *url.URL, header http.Header, body any) []Link
}
Parser extracts links from a response.
func DefaultParsers ¶
func DefaultParsers() []Parser
DefaultParsers returns the built-in set of hypermedia parsers in priority order (Link header first, then body-based formats).
type SirenParser ¶
type SirenParser struct{}
SirenParser extracts links from the `links` array. Siren link objects have `rel` (array of strings) and `href`.