grpc-ecosystem/grpc-gateway · error
invalid segment in variable %q: %w
Error message
invalid segment in variable %q: %w
What it means
Parser error from parser.variable: after '{name=' the custom segments inside the variable failed to parse (p.segments errored). The error wraps the underlying segments() failure and names the variable's field path, so a template like '{id=bad~seg}' is rejected.
Source
Thrown at internal/httprule/parse.go:195
}
return literal(lit), nil
}
func (p *parser) variable() (segment, error) {
if _, err := p.accept("{"); err != nil {
return nil, err
}
path, err := p.fieldPath()
if err != nil {
return nil, err
}
var segs []segment
if _, err := p.accept("="); err == nil {
segs, err = p.segments()
if err != nil {
return nil, fmt.Errorf("invalid segment in variable %q: %w", path, err)
}
} else {
segs = []segment{wildcard{}}
}
if _, err := p.accept("}"); err != nil {
return nil, fmt.Errorf("unterminated variable segment: %s", path)
}
return variable{
path: path,
segments: segs,
}, nil
}
func (p *parser) fieldPath() (string, error) {
c, err := p.accept(typeIdent)
if err != nil {
return "", errView on GitHub (pinned to a58a4436a3)
Solutions
- Fix the pattern after '=' inside the braces to use only valid literals and wildcards.
- Use a plain '{name}' variable (default wildcard) if a custom pattern is unnecessary.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/httprule/parse.go:195 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of grpc-ecosystem/grpc-gateway@a58a4436a3 (2026-09-02).
Data as JSON: /api/errors/4d2dd073551bb59f.
Report an issue: GitHub.