mirror of
https://github.com/CrowCpp/Crow.git
synced 2024-06-07 21:10:44 +00:00
f39b9ddce7
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
30 lines
1.9 KiB
Markdown
30 lines
1.9 KiB
Markdown
A query string is the part of the url that comes after a `?` character, it is usually formatted as `key=value&otherkey=othervalue`.
|
|
<br><br>
|
|
|
|
Crow supports query strings through `crow::request::url_params`. The object is of type `crow::query_string` and can has the following functions:<br>
|
|
##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]`.<br><br>
|
|
|
|
`#!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`.<br>
|
|
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.
|
|
|
|
<br><br>
|
|
For more information take a look [here](../../reference/classcrow_1_1query__string.html).
|