Quick Start

This guide will help you get started with HTTP Client in 5 minutes.

Simple GET Request

from requestforge import create_client

# Create a client
client = create_client('https://api.github.com')

# Make a GET request
response = client.get('/users/octocat')

# Check response
if response.is_success:
    user = response.json()
    print(f"User: {user['name']}")
else:
    print(f"Error: {response.status_code}")

POST Request with JSON

from requestforge import HttpClient, HttpClientConfigBuilder

config = (
    HttpClientConfigBuilder()
    .with_base_url('https://api.example.com')
    .with_header('Content-Type', 'application/json')
    .build()
)

client = HttpClient(config)

# POST request with JSON data
response = client.post(
    '/users',
    json_data={
        'name': 'John Doe',
        'email': 'john@example.com'
    }
)

if response.status_code == 201:
    new_user = response.json()
    print(f"Created user ID: {new_user['id']}")

With Authentication

from requestforge import HttpClientConfigBuilder, HttpClient

config = (
    HttpClientConfigBuilder()
    .with_base_url('https://api.example.com')
    .with_bearer_token('your-api-token')
    .build()
)

client = HttpClient(config)
response = client.get('/protected-resource')

With Retry Logic

from requestforge import HttpClientConfigBuilder, HttpClient

config = (
    HttpClientConfigBuilder()
    .with_base_url('https://api.example.com')
    .with_retry(
        max_retries=3,
        base_delay=1.0,
        max_delay=60.0
    )
    .build()
)

client = HttpClient(config)

# Automatically retries on failures
response = client.get('/unstable-endpoint')

Using Context Manager

from requestforge import http_client

with http_client('https://api.example.com') as client:
    response = client.get('/users')
    users = response.json()

# Client automatically closed after with block

Error Handling

from requestforge import HttpClient, TimeoutException, HttpStatusException

client = HttpClient(config)

try:
    response = client.get('/users/1')
    user = response.json()
except TimeoutException:
    print("Request timed out")
except HttpStatusException as e:
    print(f"HTTP error {e.status_code}: {e.message}")
except Exception as e:
    print(f"Unexpected error: {e}")

Next Steps