gofiber/fiber · error

len constraint requires an argument

Error message

len constraint requires an argument

What it means

Returned by lenConstraintType.Analyze (constraint.go:388-390) when the len constraint is declared without an integer argument. The len constraint enforces an exact parameter length, so the target length is mandatory; Analyze rejects the route declaration otherwise.

Solutions

  1. Supply the exact integer length: "/:code<len(5)>".
  2. If a range is needed, switch to betweenLen(min,max).
  3. Add a registration-time test for each constrained route.

Example fix

// before
app.Get("/:code<len>", handler)

// after
app.Get("/:code<len(5)>", handler)
Defensive patterns

Strategy: validation

Validate before calling

func parseLenArg(args []string) (int, error) {
    if len(args) == 0 { return 0, errors.New("len constraint requires an argument") }
    return strconv.Atoi(args[0])
}

Try / catch

// Same registration-time test pattern as minLen/maxLen;
// see Test_ConstraintAnalyze_MissingArgs.

Prevention

When it happens

Trigger: Registering app.Get("/:code<len>", ...) instead of "/:code<len(5)>".

Common situations: Confusing len with betweenLen (which takes two args); typo; documentation that omitted the argument; refactor that dropped the argument.

Related errors


AI-assisted analysis of gofiber/fiber@a105acad6c (2026-08-11). Data as JSON: /api/errors/7a9c339884dcdd58. Report an issue: GitHub.

Appendix: source

Thrown at constraint.go:389

func (maxLenConstraintType) Execute(param string, data []any) bool {
	if len(data) == 0 {
		return false
	}
	limit, ok := data[0].(int)
	if !ok {
		return false
	}
	return len(param) <= limit
}

type lenConstraintType struct{}

func (lenConstraintType) Name() string { return ConstraintLen }
func (lenConstraintType) Analyze(args []string) ([]any, error) {
	args = parseConstraintArgs(args)
	if len(args) == 0 {
		return nil, errors.New("len constraint requires an argument")
	}
	n, err := strconv.Atoi(args[0])
	if err != nil {
		return nil, fmt.Errorf("parse constraint arg: %w", err)
	}
	return []any{n}, nil
}

func (lenConstraintType) Execute(param string, data []any) bool {
	if len(data) == 0 {
		return false
	}
	limit, ok := data[0].(int)
	if !ok {
		return false
	}
	return len(param) == limit
}

View on GitHub (pinned to a105acad6c)