Eseguire più richieste HTTP in batch
Consegni un elenco di massimo 100 chiamate web, ognuna con indirizzo, metodo, intestazioni e corpo propri, e vengono eseguite in parallelo con i propri tentativi ripetuti. Tutti i risultati tornano insieme in un'unica consegna. Paga a consumo, senza abbonamento.
centinaia in un'unica chiamata
Perché conviene togliere dall'applicazione un ciclo di chiamate esterne
Quasi ogni applicazione contiene da qualche parte un ciclo che chiama servizi esterni centinaia di volte di fila: controllare se un elenco di indirizzi risponde, recuperare i prezzi di molti fornitori o inviare avvisi a un elenco di iscritti. Se gira nello stesso processo che serve i suoi utenti, quel ciclo compete con loro per connessioni e tempo di calcolo, e un solo servizio lento può bloccare l'intero giro. Consegnare l'elenco come un lotto toglie quel ciclo dall'applicazione.
Come si esegue e come torna un lotto
Lei invia un elenco di massimo 100 chiamate, ognuna con il suo indirizzo e, quando serve, metodo, intestazioni e corpo, e riceve subito un riferimento al lavoro. Le chiamate vengono eseguite insieme in background, ognuna con i propri tentativi ripetuti. Quando tutte sono concluse, riuscite, fallite o senza più tentativi, i risultati arrivano insieme. Un motore dei prezzi può così aggiornare una dozzina di fornitori in un colpo, e un cruscotto operativo può controllare decine di servizi esterni in un solo posto.
Perché non gira nel browser
A differenza di altri strumenti dev del KIT, questo non può girare solo nel tuo browser: molte richieste verso server esterni vengono bloccate dal browser stesso per motivi di sicurezza (CORS), quindi il KIT le esegue lato server per tuo conto. Per questo non c'è un modo gratis: si paga a richiesta eseguita, senza costo fisso in più da aggiungere al conto finale.
Casi d'uso
Popolare dati di test per uno sviluppo
Durante lo sviluppo di un'integrazione, un programmatore lancia decine di richieste verso un ambiente di prova per generare dati di esempio, senza scrivere uno script solo per quello.
Domande frequenti
Quante richieste posso mettere in un elenco?
Dipende dal volume: per elenchi molto grandi conviene dividerli in più chiamate, così controlli meglio i risultati parziali.
Cosa succede se una richiesta fallisce?
Il risultato lo segnala per quella richiesta, con il codice di errore ricevuto, senza bloccare l'esecuzione delle altre richieste dell'elenco.
Posso mandare richieste con autenticazione?
Sì, puoi includere intestazioni personalizzate, come un token di autorizzazione, per ogni richiesta dell'elenco.
I dati delle risposte restano salvati da qualche parte?
No, le risposte ti vengono restituite e poi non conservate: l'elaborazione serve solo a completare la tua richiesta del momento.
Quante chiamate può contenere un lotto?
Fino a 100. Ogni voce ha il proprio indirizzo e, se serve, il proprio metodo, intestazioni e corpo, quindi uno stesso lotto può mescolare chiamate molto diverse verso più servizi.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Un POST autenticato crea l'attività; il risultato arriva via webhook o con un link firmato. Questa capacità è disponibile via API, non come strumento web interattivo.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/dev/http-batch \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"requests":[{"url":"https://api.example.com/a","method":"GET"}]}'const res = await fetch("https://api.kit.forhosting.com/dev/http-batch", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"requests": [
{
"url": "https://api.example.com/a",
"method": "GET"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/http-batch",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"requests": [
{
"url": "https://api.example.com/a",
"method": "GET"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/http-batch", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"requests":[{"url":"https://api.example.com/a","method":"GET"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"requests":[{"url":"https://api.example.com/a","method":"GET"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/http-batch", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"requests": [
{
"url": "https://api.example.com/a",
"method": "GET"
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.http_batch",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Uno strumento che riceve un elenco di richieste HTTP — URL, metodo, intestazioni, corpo — e le esegue tutte, restituendo le risposte in un unico risultato. Pensato per chi deve interrogare più endpoint o servizi senza scrivere uno script solo per quello.
Un elenco di richieste, un risultato solo
Descrivi ogni richiesta — URL, metodo GET o POST, intestazioni, corpo se serve — in un elenco, e il KIT le esegue tutte, in parallelo dove possibile. Il risultato è un unico JSON con lo stato e la risposta di ognuna, nell'ordine in cui le hai definite, pronto da leggere o da salvare per un controllo successivo del comportamento di ogni endpoint interrogato.
Gestione degli errori, non solo dei successi
Se una richiesta dell'elenco fallisce — timeout, errore del server, URL non raggiungibile — il risultato lo segnala per quella richiesta specifica, con il codice di errore ricevuto, senza far fallire le altre. Utile per controllare lo stato di più endpoint insieme, sapendo esattamente quale ha risposto e quale no, senza dover ripetere manualmente ogni singola verifica una alla volta nel browser.
Prezzo e uso
$0.002 a richiesta eseguita, senza costo fisso aggiuntivo e senza abbonamento mensile di alcun tipo da sottoscrivere in anticipo. Lo lanci dalla pagina web incollando l'elenco delle richieste in formato JSON, per un controllo occasionale su pochi endpoint; oppure lo richiami via API se lo integri in un flusso automatizzato che deve girare senza intervento manuale, a intervalli regolari nel tempo.
Casi di integrazione
Controllare più endpoint dopo una modifica
Dopo aver aggiornato un servizio, un team verifica in un colpo solo che tutti gli endpoint principali rispondano ancora correttamente, invece di controllarli uno a uno a mano nel browser.
Interrogare più fornitori con la stessa richiesta
Un negozio online gestito da Giulia Bianchi confronta i prezzi di più fornitori che espongono ognuno un proprio endpoint. Lanciare le richieste tutte insieme è più veloce che aprirle una alla volta.
Domande tecniche
Perché non è gratis come altri strumenti dev del KIT?
Perché deve contattare server esterni per tuo conto, cosa che il browser non permette per motivi di sicurezza: l'esecuzione avviene lato server, e ha un costo per richiesta.
Quanto costa?
$0.002 a richiesta eseguita, a consumo, senza abbonamento. Paghi solo le richieste effettivamente lanciate.