Versioni API: preparare migrazioni compatibili

In sintesi

Cambiare numero non protegge automaticamente i consumatori. La compatibilità comprende messaggi e comportamenti su cui si basano i client reali.

Banco di verifica di componenti elettronici senza personale Illustrazione · scena fittizia
In questo articolo

Valutare dal punto di vista del client

La tabella orienta la revisione, senza garanzie universali. Campi aggiunti possono disturbare lettori rigidi; nuovi valori enumerati possono rompere gestioni esaustive. Censire client, librerie e ipotesi.

ModificaRischioProva richiesta
Eliminare o rinominare un campoLettura impossibileMigrazione esplicita e test client.
Aggiungere campo facoltativoLettore rigido o conflitto di nomeTest dei consumatori esistenti.
Nuovo valore nella rispostaGestione esaustiva incompletaComportamento per valori sconosciuti.
Cambiare valore predefinitoEsito funzionale diversoConfrontare casi senza valore esplicito.

Organizzare la coesistenza

  • Descrivere vecchie e nuove strutture, valori predefiniti, errori, paginazione e permessi. Eseguire test di contratto su casi rappresentativi.
  • Scegliere esplicitamente come selezionare la versione. Distinguere versione del servizio e del documento OpenAPI; verificare cache e gateway.
  • Pubblicare calendario, guida e contatto. Rilevare l’uso effettivo con telemetria proporzionata e preparare un ripristino compatibile con i dati.

Distinguere deprecazione e arresto

Deprecation segnala risorse deprecate; Sunset può annunciarne la prevista indisponibilità. Gli header non migrano i client. Prima del ritiro, esaminare consumatori rimasti, obblighi e procedura di recupero.

Fonti primarie

Impatto della versione sul consumatore

L'aggiunta di un numero a un URL non garantisce la conservazione dei client esistenti. Un tipo, un valore previsto, un comportamento o una risposta di errore modificati possono risultare incompatibili anche se il percorso rimane invariato.

  • Inventario dei client attivi e utilizzo osservato.
  • Testare le versioni precedenti dei client con il nuovo contratto.
  • Pubblicare un periodo di coesistenza e verificarne l'utilizzo prima della dismissione.

Fonte primaria: IETF RFC 9457 — Problem Details for HTTP APIs. Metodo correlato: consultare la guida pratica.

Attività API asincrone

Accettare una richiesta non dimostra che il lavoro sia concluso.

  • Account, operazione e identificativo riutilizzabile
  • Stato, ora, intervallo e scadenza
  • Risultato, errore, annullamento ed effetti residui
  • Una sola attività autorizzata ed esito verificato dopo interruzione

Caso di accettazione riproducibile

Esempio fittizio: questi dati non descrivono clienti o risultati osservati.

Vedi dati del caso
{
    "job_id": "J-42",
    "timeline": [
        {
            "elapsed_seconds": 0,
            "http": 202,
            "state": "pending"
        },
        {
            "elapsed_seconds": 5,
            "http": 200,
            "state": "running"
        },
        {
            "elapsed_seconds": 6,
            "http": 200,
            "state": "cancel_requested"
        },
        {
            "elapsed_seconds": 7,
            "http": 200,
            "state": "succeeded"
        }
    ]
}

Decisione attesa

Un 200 nella lettura dello stato non significa elaborazione conclusa. Dopo una richiesta di annullamento, conta solo l’esito confermato.

Annullamento richiesto troppo tardi

Scenario immaginario: stessa attività J-42, secondi dall’invio. Gli stati appartengono al contratto dell’esempio; HTTP non li impone.

IstanteRisposta e statoConclusione giustificata
+0 sHTTP 202 · pendingAccettata per elaborazione; nessun risultato finale confermato.
+5 sHTTP 200 · runningLa lettura dello stato è riuscita; l’attività continua.
+6 sHTTP 200 · cancel_requestedRichiesta di arresto registrata; annullamento da confermare.
+7 sHTTP 200 · succeededL’elaborazione ha vinto la corsa. Mostrare il successo osservato e verificare gli effetti; non dichiarare annullamento.

Microsoft — Asynchronous request-reply

202 dimostra che il lavoro terminerà?

No. Conferma l’accettazione per elaborazione, non l’esito finale. Consulta lo stato dell’operazione.

Fonte primaria: MDN — 202 Accepted. Metodo correlato: consultare la guida pratica.

Aggiornamenti software: verificare un cambio di firmatario

Decidere se un artefatto firmato corrisponde ancora a produttore, processo e versione approvati.

  • Prima di esaminare il pacchetto, registra produttore, chiave o identità del certificato, emittente e processo di build autorizzati. Collega le attese al software e a un canale già affidabile. L’artefatto non deve definire da solo la propria politica di accettazione.
  • Confronta l’impronta del file ricevuto con l’oggetto dell’attestazione. Verifica la firma con le radici di fiducia previste, poi identità, builder e parametri. Una firma valida di un’altra identità non soddisfa la politica del servizio.
  • Prova rotazione annunciata, emittente inatteso, firma assente e file diverso. Mantieni in attesa l’artefatto se la nuova identità non è confermata. Registra approvazione e ritorno; una firma non prova assenza di vulnerabilità.

Caso di accettazione riproducibile

Esempio fittizio: questi dati non descrivono clienti o risultati osservati.

Vedi dati del caso
{
    "signature_valid": true,
    "digest_matches": true,
    "expected_signer": "approved-publisher",
    "observed_signer": "different-publisher",
    "expected": "hold_for_independent_confirmation"
}

Decisione attesa

Esempio fittizio: impronta e firma sono valide, ma il firmatario differisce da quello approvato. L’installazione resta in attesa di conferma indipendente del cambio.

SLSA v1.2 — Verifying artifacts

Fonte primaria: SLSA v1.2 — Verifying artifacts. Metodo correlato: consultare la guida pratica.

API: deprecazione e ritiro

Le note dettagliate di questa edizione sono disponibili in inglese.

Plan retirement beyond the version number

A published version does not say when consumers need to migrate. Connect deprecation announcements, retirement dates and existing-client tests.

  • Distinguish Deprecation, Sunset and policy links.
  • Check that Sunset does not precede Deprecation when both dates are provided.
  • Measure remaining consumers and validate the replacement before cutover.

Compare deprecation and retirement announcements →

IETF · RFC 9745 · Deprecation · Standards Track · March 2025 · §2–5 · consulted 2026-10-23

IETF · RFC 8594 · Sunset · Informational · May 2019 · §3–5, §8 · consulted 2026-10-23