gleam/fetch/form_data

FormData are common structures on the web to send both string data, and blob. They’re the default standard when using a <form> on a web page, and they’re still a simple way to send files from a frontend to a backend.

To simplify management of form data, JavaScript exposes a structure called FormData that handles all the complicated details for you. JavaScript FormData are compatible with every standards functions, like fetch or xmlHttpRequest.

To maximise compatibility between JavaScript and Gleam, gleam_fetch exposes bindings to JavaScript FormData.

Types

Form data represents form fields and their values, as a set of key/value pairs. Keys are always strings, while values can be either strings or blob. Form data can be used in conjuction with fetch, and uses the same format a form would use with the encoding type were set to "multipart/form-data". Form data can have multiple values for a same key, and those values can be of any type (string or blob).

FormData are bindings on native JavaScript FormData object. FormData can easily be manipulated with the corresponding functions that ensure correct conversions between JavaScript & Gleam.

pub type FormData

Functions

pub fn append(
  form_data: FormData,
  key: String,
  value: String,
) -> FormData

Append a key/string pair.

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.append("key1", "value2")
|> form_data.append("key2", "value1")
pub fn append_bits(
  form_data: FormData,
  key: String,
  value: BitArray,
) -> FormData

Append a key/bitarray pair.

form_data.new()
|> form_data.append_bits("key1", <<"value1">>)
|> form_data.append_bits("key1", <<"value2">>)
|> form_data.append_bits("key2", <<"value1">>)
pub fn contains(form_data: FormData, key: String) -> Bool

Read if the key exists in the data.

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.contains("key1")
// -> True

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.contains("key2")
// -> False
pub fn delete(form_data: FormData, key: String) -> FormData

Remove a key and all its existing values.

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.append_bits("key1", <<"value2">>)
|> form_data.delete("key1")
pub fn get(form_data: FormData, key: String) -> List(String)

Get String values associated with a key. If you’re looking to also get binary values, take a look at get_bits.

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.append_bits("key1", <<"value2">>)
|> form_data.get("key1")
// -> ["value1"]
pub fn get_bits(
  form_data: FormData,
  key: String,
) -> Promise(List(BitArray))

Get all values associated with a key, whether they’re String or BitArray. Be careful, due to the nature of FormData, reading the blobs requires a Promise.

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.append_bits("key1", <<"value2">>)
|> form_data.get_bits("key1")
// -> promise.resolve([<<"value1">>, <<"value2">>])
pub fn keys(form_data: FormData) -> List(String)

Returns all keys present in the data.

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.append("key2", "value2")
|> form_data.keys
// -> ["key1", "key2"]
pub fn new() -> FormData

Create a new empty FormData.

pub fn set(
  form_data: FormData,
  key: String,
  value: String,
) -> FormData

Set key/string pair, and replace any existing value for the specified key.

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.append_bits("key1", <<"value2">>)
|> form_data.set("key1", "value3")
pub fn set_bits(
  form_data: FormData,
  key: String,
  value: BitArray,
) -> FormData

Set key/bitarray pair, and replace any existing value for the specified key.

form_data.new()
|> form_data.append("key1", "value1")
|> form_data.append_bits("key1", <<"value2">>)
|> form_data.set_bits("key1", <<"value3">>)
Search Document