dream/http/params

Parameter validation and extraction utilities

This module provides safe parameter extraction from HTTP requests, returning Result types with dream.Error instead of crashing on missing or invalid data.

Use these helpers to validate path parameters and form data in controllers, then pipe the results through your business logic using gleam/result.

Values

pub fn field_optional(
  form: List(#(String, String)),
  name: String,
) -> option.Option(String)

Extract an optional field from form data

Returns None if the field is missing or empty, Some(value) otherwise. This never returns an error - use this for truly optional fields.

Examples

let description = params.field_optional(form, "description")
pub fn require_field(
  form: List(#(String, String)),
  name: String,
) -> Result(String, error.Error)

Require a field from form data

Returns an error if the field is missing or empty.

Examples

use form <- result.try(params.require_form(request))
use title <- result.try(params.require_field(form, "title"))
pub fn require_field_int(
  form: List(#(String, String)),
  name: String,
) -> Result(Int, error.Error)

Require a field from form data as an integer

Returns an error if the field is missing, empty, or not a valid integer.

Examples

use form <- result.try(params.require_form(request))
use priority <- result.try(params.require_field_int(form, "priority"))
pub fn require_form(
  req: request.Request,
) -> Result(List(#(String, String)), error.Error)

Require and parse form data from request body

Returns a Result containing the parsed form data as key-value pairs. Returns an error if the body is empty or invalid.

Examples

use form <- result.try(params.require_form(request))
use title <- result.try(params.require_field(form, "title"))
pub fn require_int(
  req: request.Request,
  name: String,
) -> Result(Int, error.Error)

Require a path parameter as an integer

Returns a Result with dream.Error if the parameter is missing or cannot be converted to an integer.

Examples

// Using with gleam/result pipeline
let result = {
  use id <- result.try(params.require_int(request, "id"))
  // ... rest of logic with id : Int
}
pub fn require_string(
  req: request.Request,
  name: String,
) -> Result(String, error.Error)

Require a path parameter as a string

Returns a Result with dream.Error if the parameter is missing.

Examples

use name <- result.try(params.require_string(request, "name"))
// ... rest of logic with name : String
Search Document