RestRequest icon indicating copy to clipboard operation
RestRequest copied to clipboard

JUCE module for making HTTP requests to REST API's

RestRequest

JUCE module for making HTTP requests to REST API's

Example Usage

First declare your class instance e.g. as a member variable:

adamski::RestRequest request;

Then in your constructor add any headers you will need across different requests e.g.:

request.header ("Content-Type", "application/json");
request.header ("Authorization", "Basic " + Base64::toBase64 ("username:password"));

Example GET request:

adamski::RestRequest::Response response = request.get ("registry/_design/module-views/_view/all-modules")
        .execute();

// Example response debugging

DBG (response.bodyAsString);
DBG (response.result.getErrorMessage());
        
for (auto key : response.headers.getAllKeys())
{
        DBG (key << ": " << response.headers.getValue(key, "n/a"));
}

Example POST request:

adamski::RestRequest::Response response = request.post ("registry/_find")
        .field ("selector", searchString)
        .execute();

Example PUT request with chained field methods:

adamski::RestRequest::Response response = request.put ("_users/" + id)
        .field ("type", "user")
        .field ("name", username)
        .field ("email", email)
        .field ("roles", Array<var>({var("publisher")}))
        .field ("password_sha", stringToSHA1 (password + salt))
        .field ("salt", salt)
        .execute();

If you need to encode or decode strings with SHA1 I made a JUCE module out of an open source library called smallsha1: https://github.com/adamski/smallsha1