HTTP for C++.
Header-only. Simple. Expressive.
https://vixcpp.com/registry/pkg/vix/requests
vix/requests provides a simple and expressive API to perform HTTP requests in C++.
It supports:
- GET, POST, PUT, PATCH, DELETE
- headers
- query parameters
- JSON body
- form data
- sessions
It is designed to be:
- minimal
- predictable
- easy to use
- quick to integrate
Performing HTTP requests in C++ is often:
- verbose
- complex
- hard to read
- tightly coupled to low-level networking
This leads to:
- boilerplate code
- poor readability
- slow development
vix/requests provides:
- a clean API
- simple request construction
- readable code
vix add @vix/requests
vix installgit clone https://github.com/vixcpp/requests.gitAdd include/ to your project.
curlmust be available on the system
#include <vix/requests/requests.hpp>
#include <iostream>
int main()
{
auto res = vix::requests::get("https://httpbin.org/get");
std::cout << res.status_code << '\n';
std::cout << res.text << '\n';
}vix::requests::RequestOptions options;
options.params = {
{"q", "vix"},
{"page", "1"}
};
auto res = vix::requests::get("https://httpbin.org/get", options);vix::requests::RequestOptions options;
options.body = "name=Gaspard&role=builder";
options.headers["Content-Type"] = "application/x-www-form-urlencoded";
auto res = vix::requests::post("https://httpbin.org/post", options);vix::requests::RequestOptions options;
options.json = R"({
"name": "Gaspard",
"project": "Vix"
})";
auto res = vix::requests::post("https://httpbin.org/post", options);vix::requests::RequestOptions options;
options.headers["Authorization"] = "Bearer token";
options.headers["Accept"] = "application/json";
auto res = vix::requests::get("https://httpbin.org/get", options);if (res.ok())
{
std::cout << res.text << '\n';
}
res.raise_for_status();vix::requests::Session session;
session.set_header("Accept", "application/json");
session.defaults().timeout_seconds = 10;
auto res = session.get("https://httpbin.org/get");- requests are executed via system
curl - response is fully buffered
- headers and body are parsed after execution
| Operation | Complexity |
|---|---|
| request creation | O(1) |
| execution | O(n) |
| response parsing | O(n) |
- minimal API
- explicit behavior
- no hidden magic
- composable options
- header-only simplicity
vix build
vix testMIT License Copyright (c) Gaspard Kirira