Fase di testQuesto ambiente è in test pre-lancio — tutti i dati saranno azzerati al lancio.
Skip to content

Integratori ​

Questa sezione è destinata agli sviluppatori che collegano i flussi di lavoro di Mockomat a sistemi ingegneristici più ampi. Che si stia sviluppando un frontend che consuma una mock API di Mockomat, automatizzando la validazione del modello in CI/CD o integrando Mockomat nella pipeline di sviluppo del proprio team, questa pagina copre i pattern e le pratiche necessarie.

Panoramica degli endpoint API ​

Mockomat espone due superfici API distinte:

APIEndpointScopoAutenticazione
Management APIGET /graphqlCRUD dei progetti, configurazione del modello, gestione utentiJWT (basata su sessione)
Mock Runtime APIPOST /mock/{slug}/graphqlInterrogazione dei dati mock, test del comportamento del dominioAPI key (Authorization: Bearer mck_…); progetti ospite: token di condivisione

La management API viene utilizzata dall'applicazione web Mockomat e dagli strumenti amministrativi. La mock runtime API è ciò che le applicazioni consumano come backend mock.

Autenticazione ​

Ogni richiesta alla mock runtime API di un progetto del proprio account porta una API key. Le richieste senza una chiave valida vengono rifiutate, qualunque sia l'impostazione di condivisione dell'anteprima del progetto: un link di condivisione apre la pagina di anteprima, non l'API.

API key ​

Le chiavi si creano nell'app in Account → Chiavi API, per il progetto attivo. Le API key sono incluse dal piano Professional in su. Ogni chiave:

  • Appartiene a un solo progetto e risponde solo per quel progetto
  • Viene mostrata per intero una sola volta, alla creazione: conservarla come una password
  • Può avere una data di scadenza ed essere revocata in qualsiasi momento
  • Ha uno scope: Runtime interroga i dati mock, Full raggiunge anche la management API; una chiave Management non può interrogare il runtime

Inviare la chiave come bearer token:

bash
curl -X POST https://api.mockomat.com/mock/my-project/graphql \
  -H "Authorization: Bearer mck_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ products(page: 1, pageSize: 10) { items { id name price } total } }"}'

Funziona anche l'header X-API-Key: mck_your_api_key.

Tenere la chiave fuori dal codice del browser

Una API key è un segreto. Chiamare la mock API da codice lato server, dalla CI o tramite un proxy del dev server che aggiunge l'header (step 4 del flusso di integrazione qui sotto); non distribuire mai la chiave in un bundle frontend.

Progetti ospite ​

Un progetto ospite (senza account) non ha API key. Il suo endpoint accetta il token di condivisione del progetto, quello del suo link di condivisione dell'anteprima, come parametro di query:

bash
curl -X POST "https://api.mockomat.com/mock/my-guest-project/graphql?token=<share-token>" \
  -H "Content-Type: application/json" \
  -d '{"query": "{ products(page: 1, pageSize: 10) { items { id name } total } }"}'

Le richieste ospite vengono conteggiate nella quota giornaliera della sessione ospite.

Actor token (opzionali) ​

Gli actor token distinguono i consumer di una stessa API key, così da poter limitare l'uso simultaneo di una chiave. Sono opzionali: una richiesta con la sola API key viene servita.

  1. Richiedere un token con la propria API key:
bash
curl -X POST https://api.mockomat.com/runtime/actors \
  -H "Authorization: Bearer mck_your_api_key"

Risposta:

json
{
  "actorToken": "act_abc123...",
  "expiresInSeconds": 900,
  "maxActors": 1,
  "currentActors": 1
}
  1. Inviarlo con le richieste runtime:
bash
curl -X POST https://api.mockomat.com/mock/my-project/graphql \
  -H "Authorization: Bearer mck_your_api_key" \
  -H "X-Actor-Token: act_abc123..." \
  -H "Content-Type: application/json" \
  -d '{"query": "{ products(page: 1, pageSize: 10) { items { id name price } total } }"}'
  1. Scadenza per inattività — un token scade dopo 15 minuti senza richieste; ogni richiesta lo prolunga. Finché tutti gli slot actor di una chiave sono occupati, un nuovo actor riceve 429 MAX_ACTIVE_ACTORS_REACHED con un header Retry-After.
Screenshot int-01-authenticationScreenshot int-01-authentication
int-01-authenticationMissing

Punto di ingresso per l'integrazione con configurazione dell'autenticazione e del contesto.

Pattern di query ​

Query di elenco di base ​

graphql
query {
  products(page: 1, pageSize: 20) {
    items {
      id
      name
      price
      category {
        id
        name
      }
    }
    total
    page
    pageSize
  }
}

Query di dettaglio ​

graphql
query {
  product(id: "abc-123") {
    id
    name
    price
    description
    category {
      id
      name
    }
  }
}

Query con filtri ​

Gli argomenti sono parametri che l'operazione definisce nell'API design (qui minPrice su price con gte, category con eq); vedi il Runtime per operatori, ricerca e paginazione.

graphql
query {
  products(minPrice: 10, category: "electronics", pageSize: 50) {
    items {
      id
      name
      price
    }
    total
  }
}

Query con ordinamento e paginazione ​

graphql
query {
  products(sortField: "price", sortDirection: ASC, page: 2, pageSize: 20) {
    items {
      id
      name
      price
    }
    total
    page
    pageSize
  }
}

Query con relazioni annidate ​

graphql
query {
  customers(pageSize: 10) {
    items {
      id
      firstName
      lastName
      orders {
        id
        totalAmount
        createdAt
      }
    }
    total
  }
}

Flusso di integrazione consigliato ​

1. Definire un ambito di dominio stabile ​

Prima di procedere all'integrazione, identificare quali entità e query l'applicazione consumerà. Non integrare un modello che cambia ancora frequentemente: attendere che la struttura di base sia stabile.

2. Fissare i contratti di denominazione e dei campi ​

Trattare lo schema GraphQL come un contratto. Una volta che l'applicazione dipende da nomi di query e strutture di campi specifici, le modifiche a tali nomi interromperanno l'integrazione. Utilizzare la vista API design in Mockomat per finalizzare i nomi delle query prima di collegare i consumer.

3. Validare il comportamento del runtime ​

Eseguire query esaustive attraverso l'anteprima del runtime e verificare che:

  • I tipi di campo corrispondano a quelli attesi dall'applicazione
  • L'annidamento delle relazioni funzioni correttamente
  • I filtri restituiscano i sottoinsiemi previsti
  • La paginazione produca separazioni di pagina pulite

4. Integrare i sistemi consumer ​

Collegare la propria test suite, il backend-for-frontend o altri consumer all'endpoint mock. Tenere endpoint e API key nella configurazione, così da poter passare da Mockomat al backend reale.

Un'app frontend raggiunge la mock API tramite il proxy del proprio dev server, che aggiunge la chiave lato server: in questo modo la chiave non finisce mai nel bundle:

typescript
// vite.config.ts — inoltra /mock-api a Mockomat e aggiunge l'API key
export default defineConfig({
  server: {
    proxy: {
      '/mock-api': {
        target: 'https://api.mockomat.com',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/mock-api/, '/mock/my-project'),
        headers: { Authorization: `Bearer ${process.env.MOCKOMAT_API_KEY}` },
      },
    },
  },
});

// environment.ts — l'app conosce solo il percorso del proxy
export const environment = {
  apiUrl: '/mock-api/graphql',
  // Passare al backend reale quando pronto:
  // apiUrl: 'https://api.myapp.com/graphql',
};

5. Promuovere all'esportazione/implementazione ​

Quando il contratto della mock API è stabile e il frontend funziona correttamente, utilizzare la funzionalità di Esportazione per generare un backend di produzione che implementa lo stesso contratto.

Screenshot int-02-ci-cd-flowScreenshot int-02-ci-cd-flow
int-02-ci-cd-flowMissing

Pattern di integrazione CI/CD con gate su modello e runtime.

CI/CD e automazione ​

Le mock API di Mockomat possono essere integrate nella pipeline CI/CD per validare il comportamento del frontend rispetto a un backend mock stabile.

Pattern di integrazione nelle pipeline ​

Validazione del contratto — eseguire controlli di confronto dello schema quando i modelli cambiano per rilevare breaking change prima che raggiungano i consumer.

Test di integrazione — puntare la suite di test di integrazione all'endpoint Mockomat per verificare il comportamento del frontend con dati mock realistici.

Validazione dell'anteprima — prima di eseguire il merge delle modifiche al modello, validare che il runtime produca i risultati attesi interrogando l'endpoint di anteprima in modo programmatico.

Esempio di step della pipeline ​

yaml
# Esempio di step della pipeline CI
steps:
  - name: Run integration tests against mock API
    env:
      API_URL: https://api.mockomat.com/mock/my-project/graphql
      API_KEY: ${{ secrets.MOCKOMAT_API_KEY }}
    run: npm run test:integration

  - name: Smoke-check the mock API
    env:
      API_URL: https://api.mockomat.com/mock/my-project/graphql
      API_KEY: ${{ secrets.MOCKOMAT_API_KEY }}
    run: |
      # Fa fallire lo step con 401/403/404: chiave mancante, revocata o di un altro progetto
      curl -sf "$API_URL" \
        -H "Authorization: Bearer $API_KEY" \
        -H "Content-Type: application/json" \
        -d '{"query":"{ products(page: 1, pageSize: 1) { items { id } total } }"}'

Versionamento degli artefatti generati ​

Quando si utilizza la funzionalità di esportazione, versionare il codice backend generato insieme all'applicazione:

  • Committare il codice generato in un branch o repository dedicato.
  • Taggare le esportazioni con la versione del modello o la data.
  • Includere un changelog che riassuma le modifiche al modello dall'ultima esportazione.
  • Revisionare i diff del codice generato prima del merge nel branch principale.

Rate limiting ​

Alla mock runtime API si applicano tre limiti:

AmbitoLimiteAl raggiungimento
Per indirizzo IP60 richieste al minuto429 TOO_MANY_REQUESTS: riprovare dopo un minuto
Per accountLa quota di richieste del piano (al giorno o al mese)429 TOO_MANY_REQUESTS fino all'azzeramento della quota
Per API keyActor simultanei, solo se si inviano actor token429 MAX_ACTIVE_ACTORS_REACHED con un header Retry-After

I progetti ospite vengono conteggiati nella quota giornaliera della sessione ospite.

Gestione degli errori ​

Una richiesta rifiutata risponde con uno stato HTTP di errore e un corpo JSON. Decidere in base al suo code:

Stato HTTPCodiceSignificatoAzione
400Bad RequestGraphQL non valido, operazione sconosciuta o disattivata, corpo malformatoLeggere message; correggere la query o il nome dell'operazione
401UNAUTHENTICATEDNessuna API key inviata (progetto ospite: token di condivisione mancante o errato)Inviare Authorization: Bearer mck_…
401API_KEY_INVALIDChiave sconosciuta, revocata o eliminataCreare una nuova chiave
401API_KEY_EXPIREDLa data di scadenza della chiave è passataCreare una nuova chiave
401ACTOR_TOKEN_INVALIDX-Actor-Token malformatoRichiedere un token tramite /runtime/actors oppure omettere l'header
403API_KEY_SCOPE_INSUFFICIENTChiave solo di gestioneUsare una chiave Runtime o Full
404PROJECT_NOT_FOUNDSlug sconosciuto, o progetto a cui la chiave non appartiene (su /runtime/actors: il progetto della chiave è stato eliminato)Verificare lo slug; usare una chiave di questo progetto
429TOO_MANY_REQUESTSLimite per IP o quota del piano raggiuntiAttendere, poi riprovare
429MAX_ACTIVE_ACTORS_REACHEDTutti gli slot actor della chiave sono occupatiAttendere la durata del Retry-After
429RATE_LIMIT_EXCEEDEDTroppe richieste di actor token per una chiave (POST /runtime/actors)Attendere la durata del Retry-After; riusare un token finché è attivo
503QUERY_TIMEOUTLa query è durata troppoRiprovare; restringere la query

Formato della risposta di errore ​

json
{
  "statusCode": 401,
  "code": "API_KEY_INVALID",
  "message": "API_KEY_INVALID",
  "path": "/mock/my-project/graphql",
  "timestamp": "2026-10-05T09:30:00.000Z"
}

Un 429 con header Retry-After riporta anche retryAfter (secondi) nel corpo. Una richiesta servita risponde 200 con un corpo GraphQL; i problemi a livello di dati arrivano in errors[]: ad esempio extensions.code NOT_READY significa che la tabella non è ancora collegata ai dati.

Osservabilità e diagnostica ​

Monitorare questi segnali principali in tutti gli ambienti per mantenere l'affidabilità dell'integrazione:

Metriche chiave ​

  • Stabilità delle query — le risposte sono strutturate in modo coerente? Prestare attenzione a modifiche inattese dello schema.
  • Deriva della forma delle risposte — i tipi di campo o i livelli di annidamento cambiano tra gli aggiornamenti del modello?
  • Affidabilità dei lookup delle relazioni — le query annidate si risolvono correttamente in modo coerente?
  • Pattern di errori e timeout — determinate query sono costantemente lente o falliscono?
  • Prossimità ai limiti di frequenza — quanto si è vicini al raggiungimento dei limiti di richieste o di concorrenza?

Raccomandazioni per il monitoraggio ​

  • Registrare tutte le risposte API (o almeno i codici di stato e i tempi di risposta) nell'applicazione consumer.
  • Configurare avvisi per le risposte HTTP 429 e 401: indicano problemi di configurazione o di capacità.
  • Confrontare periodicamente gli schema delle risposte con una baseline per rilevare derive involontarie.
  • Monitorare i pattern di refresh degli actor token per ottimizzare la strategia di concorrenza.
Screenshot int-03-observabilityScreenshot int-03-observability
int-03-observabilityMissing

Checkpoint di osservabilità per l'affidabilità dell'integrazione.