Richieste e risposte
La forma condivisa da ogni chiamata: una richiesta multipart, una risposta che è un documento e nessuno stato conservato tra le due.
Tutte le azioni dell’API condividono un solo contratto. Si invia una richiesta
multipart/form-data con il PDF in un campo file e si riceve indietro il
documento elaborato come corpo della risposta. Non c’è nessun processo da
interrogare, nessun passaggio di upload e nessuna risorsa da ripulire in seguito:
una richiesta in entrata, un documento in uscita. Una volta imparata questa
forma, ogni pagina di azione si legge allo stesso modo.
Ogni richiesta ha lo stesso aspetto
Ogni azione è un unico POST verso /v1/<action> con un corpo
multipart/form-data. Tre elementi sono sempre presenti:
- L’intestazione
X-API-Keyche contiene la chiave segreta, su HTTPS. - Una parte
fileche contiene il PDF di input. - Zero o più parti di testo per le opzioni dell’azione (ad esempio
line_1opages), con i nomi esatti elencati nel riferimento dell’azione.
Ecco una richiesta completa che appone una filigrana, mostrata come HTTP grezzo:
POST /v1/add_text_watermark HTTP/1.1
Host: api.pdfblocks.com
X-API-Key: your_api_key
Content-Type: multipart/form-data; boundary=----PdfBlocksBoundary
------PdfBlocksBoundary
Content-Disposition: form-data; name="file"; filename="input.pdf"
Content-Type: application/pdf
%PDF-1.7
<binary PDF bytes>
------PdfBlocksBoundary
Content-Disposition: form-data; name="line_1"
CONFIDENTIAL
------PdfBlocksBoundary--Leggendola parte per parte:
- Riga di richiesta:
POST /v1/add_text_watermark. Il nome dell’azione è il percorso; il metodo è semprePOST. X-API-Key: la chiave autentica la richiesta. Vedere Autenticazione.Content-Type:multipart/form-datacon una stringa di delimitazione. L’helper multipart di qualsiasi client HTTP imposta questa intestazione e il delimitatore al posto dell’utente; è raro doverlo scrivere a mano.- La parte
file: il PDF di input, inviato in binario. - Le parti di opzione: una parte per opzione, qui
line_1. Ciascuna è un semplice valore di testo.
Quel corpo non va mai assemblato a mano. Il client HTTP di ogni linguaggio lo costruisce a partire da un handle di file e da qualche campo. La stessa richiesta in cURL:
curl https://api.pdfblocks.com/v1/add_text_watermark \
-H 'X-API-Key: your_api_key' \
-F file=@input.pdf \
-F line_1='CONFIDENTIAL' \
-o watermarked.pdfL’URL di base predefinito è https://api.pdfblocks.com. Per mantenere
l’elaborazione in una giurisdizione precisa, sostituire l’host con uno
regionale. Vedere
Regioni e residenza dei dati. Cambia
soltanto l’host; il percorso, le intestazioni e il corpo sono identici ovunque.
Ogni risposta è il documento
Un’azione a output singolo risponde con 200 OK e il PDF elaborato come corpo
grezzo:
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 48213
%PDF-1.7
<binary PDF bytes>Il corpo è il documento finito, non un JSON che avvolge un URL né una stringa
base64. Scriverlo in streaming direttamente in un file oppure passarlo al
passaggio successivo della pipeline. In cURL è il -o watermarked.pdf qui sopra;
nel codice è scrivere i byte di response su disco, esattamente come fanno gli
esempi di ogni pagina di azione.
Stateless per progettazione
L’API non memorizza nulla. Il documento viene elaborato in memoria, nella regione
a cui ci si rivolge, e scartato non appena la risposta è stata scritta. Non
esiste alcun ID di documento a cui fare riferimento in seguito né alcuna copia
lato server da eliminare. Poiché tra una chiamata e l’altra non persiste nulla,
ogni richiesta deve portare il proprio file di input, anche quando si
concatenano le azioni e si passa l’output di una chiamata direttamente alla
successiva (vedere Concatenare le azioni).
Dove il contratto varia
Tre cose si aggiungono a questa base, ciascuna documentata sulla propria pagina:
- Più di un input. Unire documenti accetta
un array ordinato di parti
filee Aggiungere una filigrana immagine accetta una seconda parte binariaimage. Entrambe sono trattate in Lavorare con i file. - Più di un output. La famiglia delle divisioni restituisce più documenti e
l’impacchettamento si sceglie (ZIP, JSON o multipart) con l’intestazione
Accept. Vedere Formati di risposta. - Gli errori. Qualsiasi errore restituisce un corpo
application/problem+jsonconforme alla RFC 7807, mai un PDF parziale. Vedere Errori.