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