Vai al contenuto
Blog

Engineering

Best practice di design API

API coerenti, versionate e ben documentate invecchiano bene. I principi di design — REST, errori, paginazione, autenticazione — che mantengono le integrazioni soddisfatte.

Di Pykero Agency · Engineering team8 lug 20265 min di lettura
Endpoint API puliti che collegano servizi con linee strutturate

Un'API è una promessa. Ogni client che vi si integra dipende dal fatto che quella promessa venga mantenuta, ed è per questo che un'API ben progettata risulta prevedibile, coerente e priva di sorprese — quasi noiosa, nel senso migliore del termine. Le API che causano problemi sono quelle costruite un endpoint alla volta, ognuno con le proprie convenzioni. Ecco i principi che rendono un'API piacevole da usare e poco costosa da mantenere per anni.

Siate inflessibilmente coerenti

La coerenza vale più dell'originalità. Scegliete le convenzioni una volta sola e applicatele ovunque:

  • Usate sostantivi per le risorse, non verbi: GET /invoices/42, non GET /getInvoice?id=42.
  • Usate i metodi HTTP secondo il loro significato: GET legge, POST crea, PATCH aggiorna parzialmente, DELETE elimina.
  • Scegliete un solo formato (snake_case o camelCase) per i campi JSON e non mescolateli mai.
  • Restituite la stessa struttura per lo stesso concetto in tutti gli endpoint.

Uno sviluppatore che impara uno dei vostri endpoint dovrebbe essere in grado di intuire gli altri. È tutto qui.

Progettate gli errori come una funzionalità di primo livello

La maggior parte delle API gestisce bene il percorso ideale e trascura i fallimenti, che sono esattamente dove gli integratori trascorrono il proprio tempo di debug. Restituite codici di stato HTTP corretti (400 per input non valido, 401 vs 403 per l'autenticazione, 404, 409 per i conflitti, 422 per la validazione) e un body di errore strutturato e leggibile dalla macchina:

`` { "error": { "code": "invalid_email", "message": "Email address is not valid", "field": "email" } } ``

Un code stabile su cui i client possono fare branching conta più di un messaggio elegante. Non esponete mai stack trace ai chiamanti.

Implementate paginazione e filtri fin dal primo giorno

Qualsiasi endpoint che restituisce una lista prima o poi ne restituirà troppe. Integrate la paginazione prima che accada. La paginazione basata su cursore è più robusta di quella basata su offset per dataset grandi o in rapida evoluzione, poiché non salta né duplica righe quando i dati cambiano. Offrite filtri e ordinamenti sensati come query parameter, e impostate sempre un limite massimo alla dimensione della pagina per evitare che un singolo chiamante richieda tutto in una volta.

Versionate con criterio

Prima o poi dovrete introdurre modifiche incompatibili. Pianificatelo con una strategia di versioning chiara: un prefisso URL come /v1/ è semplice ed esplicito. La regola che mantiene i client sereni: non rompete mai una versione esistente. Aggiungete campi, non rimuoveteli né cambiatene il significato. Quando una breaking change è inevitabile, rilasciate una nuova versione e date agli integratori una finestra di deprecazione adeguata.

Sicurezza e rate limiting come impostazione predefinita

Autenticate ogni endpoint non pubblico con un meccanismo standard — OAuth o token firmati — e non inventate mai la vostra crittografia. Restituite 429 con un header Retry-After quando i client superano i limiti, così potranno fare backoff in modo ordinato invece di martellare i vostri server. Validate e sanificate ogni input; trattate tutti i dati del client come ostili finché non si dimostra il contrario.

Documentate mentre costruite

Un'API non documentata non esiste davvero. Mantenete una specifica OpenAPI insieme al codice, così documentazione, SDK client e validazione delle richieste potranno essere generati da un'unica fonte di verità. Includete esempi reali di request e response: gli sviluppatori copiano gli esempi molto più di quanto leggano la prosa.

Il ritorno sull'investimento

Applicate questi principi con coerenza e la vostra API diventerà un asset: i partner integrano rapidamente, il carico di supporto diminuisce e potete evolvere il prodotto senza compromettere tutto ciò che è a valle. Tagliate gli angoli e ogni nuova integrazione ripeterà le stesse lezioni a spese dei vostri clienti.

Se state progettando un'API con cui dovrete convivere per anni, contattateci.

EngineeringAPIRESTarchitecture

Come può aiutare Pykero

Servizi collegati a questo articolo.

State costruendo qualcosa di simile?

Pykero Agency progetta e rilascia prodotti web, mobile, SaaS e AI pronti per la produzione.

Parliamone

Discussion

Be the first to comment.

Letture correlate