Added pop() method to query_string, same as get(), but removes the item from the querystring Added std::string() operator to json::rvalue (allows std::string(json["abc"]), which returns any value that isn't a container to string) Added lo() method to json::rvalue, returns a vector of json::rvalue containing whatever a json object or list has (difference being a list has no keys) Added keys() method to json::rvalue, returns a vector of std::string containing the keys of a json object Made json::wvalue use either std::map or std::unordered_map instead of just std::unordered_map Added copy constructor to json::wvalue Added size() method to json::wvalue, returns 1 or the size of the json list. Added constructor to create json::wvalue from std::vector Added keys() method to query_string Documented query_string and improved json doc Made tests and examples for all the additions
1.9 KiB
A query string is the part of the url that comes after a ?
character, it is usually formatted as key=value&otherkey=othervalue
.
Crow supports query strings through crow::request::url_params
. The object is of type crow::query_string
and can has the following functions:
##get(name)
Returns the value (as char*) based on the given key (or name). Returns nullptr
if the key is not found.
##pop(name)
Works the same as get
, but removes the returned value.
!!! note
`crow::request::url_params` is a const value, therefore for pop (also pop_list and pop_dict) to work, a copy needs to be made.
##get_list(name)
A url can be http://example.com?key[]=value1&key[]=value2&key[]=value3
. Using get_list("key")
on such a url returns an std::vector<std::string>
containing [value1, value2, value3]
.
#!cpp get_list("key", false)
can be used to parse http://example.com?key=value1&key=value2&key=value3
##pop_list(name)
Works the same as get_list
but removes all instances of values having the given key (use_brackets
is also available here).
##get_dict(name)
Returns an std::unordered_map<std::string, std::string>
from a query string such as ?key[sub_key1]=value1&key[sub_key2]=value2&key[sub_key3]=value3
.
The key in the map is what's in the brackets (sub_key1
for example), and the value being what's after the =
sign (value1
). The name passed to the function is not part of the returned value.
##pop_dict(name)
Works the same as get_dict
but removing the values from the query string.
!!!warning
if your query string contains both a list and dictionary with the same key, it is best to use `pop_list` before either `get_dict` or `pop_dict`, since a map cannot contain more than one value per key, each item in the list will override the previous and only the last will remain with an empty key.
For more information take a look here.