gleam/http/request
Types
A HTTP request.
The body of the request is parameterised. The HTTP server or client you are using will have a particular set of types it supports for the body.
pub type Request(body) {
Request(
method: Method,
headers: List(Header),
body: body,
scheme: Scheme,
host: String,
port: Option(Int),
path: String,
query: Option(String),
)
}
Constructors
-
Request( method: Method, headers: List(Header), body: body, scheme: Scheme, host: String, port: Option(Int), path: String, query: Option(String), )
Arguments
-
headers
The request headers. The keys must always be lowercase.
-
Functions
pub fn from_uri(uri: Uri) -> Result(Request(String), Nil)
Construct a request from a URI.
pub fn get_cookies(req: Request(a)) -> List(#(String, String))
Fetch the cookies sent in a request.
Note badly formed cookie pairs will be ignored. RFC6265 specifies that invalid cookie names/attributes should be ignored.
pub fn get_header(
request: Request(a),
key: String,
) -> Result(String, Nil)
Get the value for a given header.
If the request does not have that header then Error(Nil)
is returned.
Header keys are always lowercase in gleam_http
. To use any uppercase
letter is invalid.
pub fn get_query(
request: Request(a),
) -> Result(List(#(String, String)), Nil)
Decode the query of a request.
pub fn map(
request: Request(a),
transform: fn(a) -> b,
) -> Request(b)
Update the body of a request using a given function.
pub fn new() -> Request(String)
A request with commonly used default values. This request can be used as an initial value and then update to create the desired request.
pub fn path_segments(request: Request(a)) -> List(String)
Return the non-empty segments of a request path.
Examples
> new()
> |> set_path("/one/two/three")
> |> path_segments
["one", "two", "three"]
pub fn prepend_header(
request: Request(a),
key: String,
value: String,
) -> Request(a)
Prepend the header with the given value under the given header key.
Similar to set_header
except if the header already exists it prepends
another header with the same key.
Header keys are always lowercase in gleam_http
. To use any uppercase
letter is invalid.
pub fn remove_cookie(req: Request(a), name: String) -> Request(a)
Remove a cookie from a request
Remove a cookie from the request. If no cookie is found return the request unchanged. This will not remove the cookie from the client.
pub fn set_body(req: Request(a), body: b) -> Request(b)
Set the body of the request, overwriting any existing body.
pub fn set_cookie(
req: Request(a),
name: String,
value: String,
) -> Request(a)
Send a cookie with a request
Multiple cookies are added to the same cookie header.
pub fn set_header(
request: Request(a),
key: String,
value: String,
) -> Request(a)
Set the header with the given value under the given header key.
If already present, it is replaced.
Header keys are always lowercase in gleam_http
. To use any uppercase
letter is invalid.
pub fn set_host(req: Request(a), host: String) -> Request(a)
Set the host of the request.
pub fn set_method(req: Request(a), method: Method) -> Request(a)
Set the method of the request.
pub fn set_path(req: Request(a), path: String) -> Request(a)
Set the path of the request.
pub fn set_query(
req: Request(a),
query: List(#(String, String)),
) -> Request(a)
Set the query of the request. Query params will be percent encoded before being added to the Request.
pub fn set_scheme(req: Request(a), scheme: Scheme) -> Request(a)
Set the scheme (protocol) of the request.