mirror of
https://github.com/yhirose/cpp-httplib.git
synced 2026-04-11 19:28:30 +00:00
3.2 KiB
3.2 KiB
title, order, status
| title | order | status |
|---|---|---|
| Cookbook | 0 | draft |
A collection of recipes that answer "How do I...?" questions. Each recipe is self-contained — read only what you need.
Client
Basics
- Get the response body as a string / save to a file
- Send and receive JSON
- Set default headers (
set_default_headers) - Follow redirects (
set_follow_location)
Authentication
- Use Basic authentication (
set_basic_auth) - Call an API with a Bearer token
File Upload
- Upload a file as multipart form data (
make_file_provider) - POST a file as raw binary (
make_file_body) - Send the body with chunked transfer (Content Provider)
Streaming & Progress
- Receive a response as a stream
- Use the progress callback (
DownloadProgress/UploadProgress)
Connection & Performance
- Set timeouts (
set_connection_timeout/set_read_timeout) - Set an overall timeout (
set_max_timeout) - Understand connection reuse and Keep-Alive behavior
- Enable compression (
set_compress/set_decompress) - Send requests through a proxy (
set_proxy)
Error Handling & Debugging
- Handle error codes (
Result::error()) - Handle SSL errors (
ssl_error()/ssl_backend_error()) - Set up client logging (
set_logger/set_error_logger)
Server
Basics
- Register GET / POST / PUT / DELETE handlers
- Receive JSON requests and return JSON responses
- Use path parameters (
/users/:id) - Set up a static file server (
set_mount_point)
Streaming & Files
- Stream a large file in the response (
ContentProvider) - Return a file download response (
Content-Disposition) - Receive multipart data as a stream (
ContentReader) - Compress responses (gzip)
Handler Chain
- Add pre-processing to all routes (Pre-routing handler)
- Add response headers with a Post-routing handler (CORS, etc.)
- Authenticate per route with a Pre-request handler (
matched_route) - Pass data between handlers with
res.user_data
Error Handling & Debugging
- Return custom error pages (
set_error_handler) - Catch exceptions (
set_exception_handler) - Log requests (Logger)
- Detect client disconnection (
req.is_connection_closed())
Operations & Tuning
- Assign a port dynamically (
bind_to_any_port) - Control startup order with
listen_after_bind - Shut down gracefully (
stop()and signal handling) - Tune Keep-Alive (
set_keep_alive_max_count/set_keep_alive_timeout) - Configure the thread pool (
new_task_queue)
TLS / Security
- Choosing between OpenSSL, mbedTLS, and wolfSSL (build-time
#definedifferences) - Control SSL certificate verification (disable, custom CA, custom callback)
- Use a custom certificate verification callback (
set_server_certificate_verifier) - Set up an SSL/TLS server (certificate and private key)
- Configure mTLS (mutual TLS with client certificates)
- Access the peer certificate on the server (
req.peer_cert()/ SNI)
SSE
- Implement an SSE server
- Use event names to distinguish event types
- Handle reconnection (
Last-Event-ID) - Receive SSE events on the client
WebSocket
- Implement a WebSocket echo server and client
- Configure heartbeats (
set_websocket_ping_interval/CPPHTTPLIB_WEBSOCKET_PING_INTERVAL_SECOND) - Handle connection close
- Send and receive binary frames