Le API falliscono su Adobe Commerce? Dai problemi di token "401 Unauthorized" ai criptici "500 Internal Server Error", ecco la guida definitiva per il debug delle integrazioni REST su Magento 2
Adobe Commerce (precedentemente Magento 2) è ampiamente riconosciuto come la piattaforma e-commerce più flessibile sul mercato. Tuttavia, questa flessibilità ha un prezzo: la rigidità.
Per gli sviluppatori che costruiscono integrazioni—che stiano collegando un ERP (come SAP o Microsoft Dynamics), un PIM o una piattaforma di automazione delle spedizioni come ShippyPro—le API REST di Magento possono essere spietate. Una singola virgola mancante in un payload JSON o una Access Control List (ACL) configurata in modo impreciso possono bloccare la sincronizzazione dei dati.
A differenza di altre piattaforme che potrebbero restituire un messaggio di errore utile come "Email non valida", Magento restituisce spesso codici di stato generici che ti lasciano tirare a indovinare.
In questa guida completa, andremo oltre le definizioni di base. Decostruiremo la logica dietro gli errori API più frequenti di Magento, esploreremo i log lato server che devi monitorare e forniremo correzioni architettoniche permanenti per mantenere stabili le tue integrazioni.
Nota: Se stai cercando una guida passo-passo per la configurazione iniziale, consulta il nostro tutorial su come connettere Magento 2 a ShippyPro.
Questo è l'ostacolo più comune per le nuove integrazioni. Invii una richiesta valida, ma Magento rifiuta di elaborarla.Se hai dubbi sulla configurazione delle credenziali, verifica i passaggi in come risolvere i problemi di Magento.
Magento offre molteplici metodi di autenticazione. Un errore comune è utilizzare l'endpoint del Token Admin (POST /V1/integration/admin/token) per applicazioni esterne.
Il Problema: I Token Admin sono progettati per sessioni umane. Di default, scadono dopo 4 ore. Se il tuo script ha un token hard-coded generato ieri, oggi fallirà.
Il Sintomo: La tua integrazione funziona perfettamente durante i test, ma fallisce durante la notte.
Non aumentare la durata del token admin (che è un rischio per la sicurezza). Genera invece un Bearer Token permanente.
Accedi al pannello Admin di Magento.
Vai su Sistema > Estensioni > Integrazioni (System > Extensions > Integrations).
Clicca su Aggiungi Nuova Integrazione.
Dagli un nome (es. "Connessione ERP") e inserisci la tua password.
Passaggio Cruciale: Clicca sulla scheda API a sinistra e seleziona le risorse esatte di cui questa app ha bisogno (es. "Sales", "Catalog"). Non dare accesso admin completo a meno che non sia necessario.
Salva e clicca su Attiva.
Magento mostrerà un Access Token.
Risultato: Usa questo token nell'header della tua API (Authorization: Bearer <token>). Non scade mai.
Stai guardando la documentazione Swagger di Adobe Commerce. L'endpoint /V1/products/{sku} esiste sicuramente. Eppure, quando lo chiami, ottieni un 404.
Magento 2 ha un'architettura multi-store. Supporta più siti web, negozi e viste (lingue) su un'unica installazione. Quando colpisci la root /rest/V1/..., Magento cerca di indovinare quale store vuoi interrogare. Se la tua configurazione è complessa, o se stai cercando di accedere a dati specifici di uno store (come la descrizione di un prodotto tradotta in italiano), l'endpoint root fallirà.
Definisci sempre lo scope nella struttura del tuo URL.
❌ La Richiesta Ambigua: GET https://miostore.it/rest/V1/products/123
✅ La Richiesta Esplicita (Store Default): GET https://miostore.it/rest/default/V1/products/123
✅ La Richiesta Esplicita (Scope Globale): GET https://miostore.it/rest/all/V1/products/123
Un errore 400 significa che il server ha ricevuto la tua richiesta ma l'ha rifiutata perché i dati non corrispondevano allo schema previsto.
Errori di Sintassi JSON: Una virgola finale alla fine di un oggetto JSON è valida in JavaScript ma invalida in JSON. Il parser di Magento la rifiuterà.
Campi "Required" Mancanti: Se provi a creare un'entità Cliente ma ometti i campi email o lastname, l'API lancia un 400.
Discrepanza Tipo Attributo: Inviare una stringa "10" a un campo definito come integer o float può causare errori di validazione in modalità strict.
Non fare affidamento sulla documentazione online generica. Magento genera documentazione basata sulla tua istanza specifica, inclusi i tuoi attributi personalizzati.
Vai su: https://tuo-dominio-magento.it/swagger
Questa pagina interattiva ti mostra lo schema JSON esatto che il tuo store specifico richiede. Testa il tuo payload lì per primo. Se funziona in Swagger, funzionerà nel tuo codice.
Questo è l'errore più temuto perché la risposta API non ti dà alcuna informazione. Di solito dice solo {"message": "Internal Server Error"}.
Un errore 500 significa che PHP è andato in crash. Questo potrebbe essere dovuto a:
Esaurimento Memoria: Hai provato a caricare 5.000 prodotti in una sola chiamata, colpendo il limite di memoria PHP (memory_limit).
Conflitto Plugin Terze Parti: Un "Observer" o "Plugin" attivato dalla tua azione di salvataggio API ha un bug.
Database Lock: Un altro processo sta bloccando la riga che stai cercando di aggiornare.
Non puoi fare il debug di un errore 500 dal client API (Postman/Insomnia). Devi andare sul server.
Accedi via SSH al tuo server Magento.
Naviga nella directory root.
Esegui questo comando per guardare i log in tempo reale: tail -f var/log/exception.log var/log/system.log
Attiva di nuovo la chiamata API.
Analizza: Il terminale mostrerà lo stack trace. Cerca righe come Uncaught Error: Call to a member function... o SQLSTATE[HY000]: General error. Questo ti dice esattamente quale file e numero di riga ha causato il crash.
Questa è l'impostazione di sicurezza predefinita per i token Utente Admin. Magento presume che un umano sia loggato. Per evitare questo per script automatizzati, crea un'Integrazione nel menu di sistema. Le integrazioni usano la logica OAuth e forniscono token che non scadono a meno che non vengano revocati manualmente.
Magento usa searchCriteria. Per filtrare per data, non puoi semplicemente aggiungere ?date=today. Devi costruire una query string complessa come: searchCriteria[filter_groups][0][filters][0][field]=created_at &searchCriteria[filter_groups][0][filters][0][value]=2025-01-01 &searchCriteria[filter_groups][0][filters][0][condition_type]=gt (greater than / maggiore di).
Tecnicamente sì, ma è pericoloso. Attivare una reindicizzazione completa (full reindex) via API durante le ore di alto traffico può bloccare le tabelle del database e rallentare il checkout per i clienti. È best practice lasciare che i cron job interni di Magento gestiscano l'indicizzazione ("Update on Schedule").
Il debugging di Magento richiede pazienza e i giusti strumenti. Spostandoti dai token admin alle integrazioni e monitorando i log delle eccezioni, puoi trasformare una "scatola nera" in un sistema trasparente e affidabile.
Hai bisogno di automatizzare le tue spedizioni Magento senza mal di testa? 👉 Inizia oggi la tua prova gratuita con ShippyPro