dream/http
Convenience module for HTTP utilities
This module re-exports all HTTP-related types and functions from the dream/http submodules, allowing you to use a single import in your controllers.
Instead of importing from multiple modules:
import dream/http/request.{type Request}
import dream/http/response.{json_response}
import dream/http/status
import dream/http/params.{require_int}
You can just import one:
import dream/http
pub fn show(request: http.Request, context, services) -> http.Response {
use id <- result.try(http.require_int(request, "id"))
let user = get_user(services.db, id)
http.json_response(http.ok, user_to_json(user))
}
What’s Re-exported
This module re-exports:
Types:
Request,Response,Method,Protocol,VersionHeader,Cookie,SameSite,PathParamResponseBody,Error
Functions:
- Response builders:
text_response,json_response,html_response, etc. - Status codes:
ok,created,bad_request,not_found, etc. - Parameter validation:
require_int,require_string,require_form, etc. - Header utilities:
get_header,set_header,add_header, etc. - Cookie utilities:
get_cookie,simple_cookie,secure_cookie, etc. - Request utilities:
get_param,get_query_param,has_content_type, etc.
When to Use This
Use dream/http in controllers for convenience. For more specific imports
or when you only need one or two functions, import the specific submodule:
import dream/http/status // Just status codes
import dream/http/error.{type Error} // Just error type
Types
pub type Cookie =
cookie.Cookie
pub type Error =
error.Error
pub type Header =
header.Header
pub type Method =
request.Method
pub type PathParam =
request.PathParam
pub type Protocol =
request.Protocol
pub type Request =
request.Request
pub type Response =
response.Response
pub type ResponseBody =
response.ResponseBody
pub type SameSite =
cookie.SameSite
pub type ValidationError =
validation.ValidationError
pub type Version =
request.Version
Values
pub const bad_request: Int
pub const binary_response: fn(Int, BitArray, String) -> response.Response
pub const cookie_name: fn(cookie.Cookie) -> String
pub const cookie_value: fn(cookie.Cookie) -> String
pub const empty_response: fn(Int) -> response.Response
pub const field_optional: fn(List(#(String, String)), String) -> option.Option(
String,
)
pub const get_cookie: fn(List(cookie.Cookie), String) -> option.Option(
cookie.Cookie,
)
pub const get_cookie_value: fn(List(cookie.Cookie), String) -> option.Option(
String,
)
pub const get_header: fn(List(header.Header), String) -> option.Option(
String,
)
pub const get_int_param: fn(request.Request, String) -> Result(
Int,
String,
)
pub const get_param: fn(request.Request, String) -> Result(
request.PathParam,
String,
)
pub const get_query_param: fn(String, String) -> option.Option(
String,
)
pub const get_string_param: fn(request.Request, String) -> Result(
String,
String,
)
pub const has_content_type: fn(request.Request, String) -> Bool
pub const header_name: fn(header.Header) -> String
pub const header_value: fn(header.Header) -> String
pub const html_response: fn(Int, String) -> response.Response
pub const internal_server_error: Int
pub const is_method: fn(request.Request, request.Method) -> Bool
pub const json_response: fn(Int, String) -> response.Response
pub const method_not_allowed: Int
pub const method_to_string: fn(request.Method) -> String
pub const moved_permanently: Int
pub const no_content: Int
pub const not_implemented: Int
pub const parse_method: fn(String) -> option.Option(
request.Method,
)
pub const redirect_response: fn(Int, String) -> response.Response
pub const require_field: fn(List(#(String, String)), String) -> Result(
String,
error.Error,
)
pub const require_field_int: fn(List(#(String, String)), String) -> Result(
Int,
error.Error,
)
pub const require_form: fn(request.Request) -> Result(
List(#(String, String)),
error.Error,
)
pub const require_int: fn(request.Request, String) -> Result(
Int,
error.Error,
)
pub const require_string: fn(request.Request, String) -> Result(
String,
error.Error,
)
pub const secure_cookie: fn(String, String) -> cookie.Cookie
pub const service_unavailable: Int
pub const set_params: fn(request.Request, List(#(String, String))) -> request.Request
pub const simple_cookie: fn(String, String) -> cookie.Cookie
pub const stream_response: fn(
Int,
yielder.Yielder(BitArray),
String,
) -> response.Response
pub const temporary_redirect: Int
pub const text_response: fn(Int, String) -> response.Response
pub const too_many_requests: Int
pub const unauthorized: Int
pub const unprocessable_content: Int
pub const validate_json: fn(String, decode.Decoder(a)) -> Result(
a,
validation.ValidationError,
)