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_port(req: Request(a), port: Int) -> Request(a)

Set the port 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.

pub fn to(url: String) -> Result(Request(String), Nil)

Construct a request from a URL string

pub fn to_uri(request: Request(a)) -> Uri

Return the uri that a request was sent to.

Search Document