Aller au contenu

curl - Client HTTP et transfert de données

Copier toutes les commandes Générer PDF

Commandes boucles complètes pour les requêtes HTTP, les tests API et le transfert de données sur toutes les plateformes.

Demandes HTTP de base

Obtenez Demandes

Command Description
curl https://api.example.com Basic GET request
curl -v https://api.example.com Verbose output with headers
curl -i https://api.example.com Include response headers
curl -I https://api.example.com HEAD request only
curl -L https://example.com Follow redirects

POSTE Demandes

Command Description
curl -X POST https://api.example.com Basic POST request
curl -d "data" https://api.example.com POST with data
curl -d @file.json https://api.example.com POST data from file
curl -F "file=@upload.txt" https://api.example.com File upload

Autres méthodes HTTP

Command Description
curl -X PUT -d "data" https://api.example.com PUT request
curl -X DELETE https://api.example.com/item/1 DELETE request
curl -X PATCH -d "data" https://api.example.com PATCH request

En-têtes et authentification

En-têtes personnalisés

Command Description
curl -H "Content-Type: application/json" url Set content type
curl -H "Authorization: Bearer token" url Bearer token auth
curl -H "User-Agent: MyApp/1.0" url Custom user agent
curl -H "Accept: application/xml" url Accept header

Méthodes d'authentification

Command Description
curl -u username:password url Basic authentication
curl -u username url Prompt for password
curl --oauth2-bearer token url OAuth2 bearer token
curl --digest -u user:pass url Digest authentication

API Authentification des clés

# API key in header
curl -H "X-API-Key: your-api-key" https://api.example.com

# API key in query parameter
curl "https://api.example.com?api_key=your-api-key"

# Multiple headers
curl -H "Authorization: Bearer token" \
     -H "Content-Type: application/json" \
     https://api.example.com

Formats de données

JSON Données

# POST JSON data
curl -X POST \
     -H "Content-Type: application/json" \
     -d '\\\\{"name":"John","age":30\\\\}' \
     https://api.example.com/users

# JSON from file
curl -X POST \
     -H "Content-Type: application/json" \
     -d @data.json \
     https://api.example.com/users
```_

### Données du formulaire
```bash
# URL-encoded form data
curl -d "name=John&age=30" https://api.example.com/users

# Multipart form data
curl -F "name=John" -F "age=30" https://api.example.com/users

# File upload with form data
curl -F "file=@document.pdf" \
     -F "description=Important document" \
     https://api.example.com/upload
```_

### XML Données
```bash
# POST XML data
curl -X POST \
     -H "Content-Type: application/xml" \
     -d '<user><name>John</name><age>30</age></user>' \
     https://api.example.com/users

Opérations de fichiers

Télécharger les fichiers

Command Description
curl -O https://example.com/file.zip Download with original name
curl -o myfile.zip https://example.com/file.zip Download with custom name
curl -C - -O https://example.com/file.zip Resume interrupted download
curl --limit-rate 100k -O url Limit download speed

Télécharger des fichiers

Command Description
curl -T file.txt ftp://server/path/ Upload via FTP
curl -F "file=@upload.txt" url HTTP file upload
curl --upload-file file.txt url PUT file upload

Fichiers multiples

# Download multiple files
curl -O https://example.com/file1.zip -O https://example.com/file2.zip

# Upload multiple files
curl -F "file1=@doc1.pdf" -F "file2=@doc2.pdf" https://api.example.com/upload

Options avancées

Délais et retraits

Command Description
curl --connect-timeout 10 url Connection timeout (seconds)
curl --max-time 30 url Maximum total time
curl --retry 3 url Retry on failure
curl --retry-delay 5 url Delay between retries

Options SSL/TLS

Command Description
curl -k url Ignore SSL certificate errors
curl --cacert ca.pem url Use custom CA certificate
curl --cert client.pem url Use client certificate
curl --tlsv1.2 url Force TLS version

Proxy et réseau

Command Description
curl --proxy proxy.example.com:8080 url Use HTTP proxy
curl --socks5 proxy.example.com:1080 url Use SOCKS5 proxy
curl --interface eth0 url Use specific network interface
curl --dns-servers 8.8.8.8 url Use custom DNS servers

Produit et présentation

Contrôle de sortie

Command Description
curl -s url Silent mode (no progress)
curl -S url Show errors even in silent mode
curl -o /dev/null url Discard output
curl -w "%\\{http_code\\}" url Show only HTTP status code

Informations sur la réponse

# Get detailed timing information
curl -w "@curl-format.txt" https://example.com

# curl-format.txt content:
#     time_namelookup:  %\\\\{time_namelookup\\\\}\n
#        time_connect:  %\\\\{time_connect\\\\}\n
#     time_appconnect:  %\\\\{time_appconnect\\\\}\n
#    time_pretransfer:  %\\\\{time_pretransfer\\\\}\n
#       time_redirect:  %\\\\{time_redirect\\\\}\n
#  time_starttransfer:  %\\\\{time_starttransfer\\\\}\n
#                     ----------\n
#          time_total:  %\\\\{time_total\\\\}\n

JSON Traitement

# Pretty print JSON with jq
curl -s https://api.example.com/users|jq '.'

# Extract specific fields
curl -s https://api.example.com/users|jq '.[]|.name'

# Filter results
curl -s https://api.example.com/users|jq '.[]|select(.age > 25)'

Essais et débogage

Essai de l'API

# Test REST API endpoints
curl -X GET https://api.example.com/users
curl -X POST -d '\\\\{"name":"John"\\\\}' https://api.example.com/users
curl -X PUT -d '\\\\{"name":"Jane"\\\\}' https://api.example.com/users/1
curl -X DELETE https://api.example.com/users/1

# Test with different content types
curl -H "Accept: application/json" https://api.example.com/users
curl -H "Accept: application/xml" https://api.example.com/users

Essais de performance

# Measure response time
curl -w "Total time: %\\\\{time_total\\\\}s\n" -o /dev/null -s https://example.com

# Test multiple requests
for i in \\\\{1..10\\\\}; do
  curl -w "%\\\\{time_total\\\\}\n" -o /dev/null -s https://example.com
done

Gestion des erreurs

# Check HTTP status codes
http_code=$(curl -s -o /dev/null -w "%\\\\{http_code\\\\}" https://example.com)
if [ $http_code -eq 200 ]; then
    echo "Success"
else
    echo "Error: HTTP $http_code"
fi

Configuration et scripts

Fichier de configuration

# ~/.curlrc configuration file
user-agent = "MyApp/1.0"
connect-timeout = 10
max-time = 30
show-error
silent

Scénarios de masse

#!/bin/bash
# API testing script

BASE_URL="https://api.example.com"
API_KEY="your-api-key"

# Function to make authenticated requests
api_request() \\\\{
    local method=$1
    local endpoint=$2
    local data=$3

    curl -X "$method" \
         -H "Authorization: Bearer $API_KEY" \
         -H "Content-Type: application/json" \
         $\\\\{data:+-d "$data"\\\\} \
         "$BASE_URL$endpoint"
\\\\}

# Usage examples
api_request GET "/users"
api_request POST "/users" '\\\\{"name":"John","email":"john@example.com"\\\\}'

Pratiques exemplaires en matière de sécurité

Authentification sécurisée

# Use environment variables for sensitive data
export API_TOKEN="your-secret-token"
curl -H "Authorization: Bearer $API_TOKEN" https://api.example.com

# Read credentials from file
curl -K credentials.txt https://api.example.com

# credentials.txt:
# header = "Authorization: Bearer your-token"

Vérification du certificat

# Always verify SSL certificates in production
curl --cacert /path/to/ca-bundle.crt https://api.example.com

# For development only (not recommended for production)
curl -k https://self-signed.example.com

Cas d'utilisation courante

Scraping Web

# Download webpage
curl -L https://example.com > page.html

# Follow redirects and save cookies
curl -L -c cookies.txt -b cookies.txt https://example.com

# Set user agent to avoid blocking
curl -H "User-Agent: Mozilla/5.0 (compatible; bot)" https://example.com

Intégration de l'API

# GitHub API example
curl -H "Authorization: token your-github-token" \
     https://api.github.com/user/repos

# Weather API example
curl "https://api.openweathermap.org/data/2.5/weather?q=London&appid=your-api-key"

# Slack webhook example
curl -X POST \
     -H "Content-Type: application/json" \
     -d '\\\\{"text":"Hello from curl!"\\\\}' \
     https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK

Transfert de fichiers

# Upload to cloud storage
curl -X PUT \
     -H "Authorization: Bearer token" \
     --upload-file document.pdf \
     https://api.storage.com/files/document.pdf

# Download with progress bar
curl --progress-bar -O https://example.com/largefile.zip

Dépannage

Questions communes

Problem Solution
SSL certificate errors Use -k for testing, fix certificates for production
Connection timeout Increase --connect-timeout value
Slow downloads Use --limit-rate to control bandwidth
Authentication failures Check credentials and authentication method

Débogage des commandes

# Verbose output for debugging
curl -v https://example.com

# Trace all network activity
curl --trace trace.txt https://example.com

# Show only headers
curl -I https://example.com

# Test connectivity
curl -I --connect-timeout 5 https://example.com