#include #include #include size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) { ((std::string*)userp)->append((char*)contents, size * nmemb); return size * nmemb; } std::string httpRequest(const std::string& url, const std::string& method, const std::string& body = "") { CURL* curl; CURLcode res; std::string readBuffer; curl = curl_easy_init(); if (curl) { struct curl_slist* headers = NULL; headers = curl_slist_append(headers, "Content-Type: application/json"); curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, method.c_str()); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); if (!body.empty()) { curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body.c_str()); } curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); res = curl_easy_perform(curl); curl_easy_cleanup(curl); } return readBuffer; } int main() { std::string base = "http://localhost:8080/shop-1.0-SNAPSHOT/api/items"; // GET all items std::cout << "GET all items:\n" << httpRequest(base, "GET") << "\n\n"; // GET item by ID std::cout << "GET item 1:\n" << httpRequest(base + "/1", "GET") << "\n\n"; // POST new item std::string newItem = R"({"name":"Mouse","price":1.25, "description":"Logitek gaming mouse"})"; std::cout << "POST new item:\n" << httpRequest(base, "POST", newItem) << "\n\n"; return 0; }