12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- = cowboy_req:read_urlencoded_body(3)
- == Name
- cowboy_req:read_urlencoded_body - Read and parse a urlencoded request body
- == Description
- [source,erlang]
- ----
- read_urlencoded_body(Req :: cowboy_req:req())
- -> read_urlencoded_body(Req, #{})
- read_urlencoded_body(Req :: cowboy_req:req(), Opts)
- -> {ok, Body, Req}
- Opts :: cowboy_req:read_body_opts()
- Body :: [{Key :: binary(), Value :: binary() | true}]
- ----
- Read and parse a urlencoded request body.
- This function reads the request body and parses it as
- `application/x-www-form-urlencoded`. It returns a list
- of key/values.
- The urlencoded media type is used by Web browsers when
- submitting HTML forms using the POST method.
- Cowboy needs to read the full body before parsing. By default
- it will read bodies of size up to 64KB. It is possible to
- provide options to read larger bodies if required.
- Cowboy will automatically handle protocol details including
- the expect header, chunked transfer-encoding and others.
- Once the body has been read, Cowboy sets the content-length
- header if it was not previously provided.
- This function can only be called once. Calling it again will
- result in undefined behavior.
- == Arguments
- Req::
- The Req object.
- Opts::
- A map of body reading options. Please refer to
- link:man:cowboy_req:read_body(3)[cowboy_req:read_body(3)]
- for details about each option.
- +
- This function defaults the `length` to 64KB and the `period`
- to 5 seconds.
- == Return value
- An `ok` tuple is returned containing a list of key/values found
- in the body.
- The Req object returned in the tuple must be used for that point
- onward. It contains a more up to date representation of the request.
- For example it may have an added content-length header once the
- body has been read.
- == Changelog
- * *2.0*: Function introduced. Replaces `body_qs/1,2`.
- == Examples
- .Read a urlencoded body
- [source,erlang]
- ----
- {ok, Body, Req} = cowboy_req:read_urlencoded_body(Req0),
- {_, Lang} = lists:keyfind(<<"lang">>, 1, Body).
- ----
- .Allow large urlencoded bodies
- [source,erlang]
- ----
- {ok, Body, Req} = cowboy_req:read_urlencoded_body(Req0, #{length => 1000000}).
- ----
- == See also
- link:man:cowboy_req(3)[cowboy_req(3)],
- link:man:cowboy_req:has_body(3)[cowboy_req:has_body(3)],
- link:man:cowboy_req:body_length(3)[cowboy_req:body_length(3)],
- link:man:cowboy_req:read_body(3)[cowboy_req:read_body(3)],
- link:man:cowboy_req:read_part(3)[cowboy_req:read_part(3)],
- link:man:cowboy_req:read_part_body(3)[cowboy_req:read_part_body(3)]
|