Introduzione
L'errore Odoo JSONRPC si verifica quando una chiamata inviata a Odoo tramite il protocollo JSON-RPC non viene processata correttamente. JSON-RPC è il canale principale usato dal client web di Odoo e da molte integrazioni moderne.
A differenza di XML-RPC, JSON-RPC è ampiamente impiegato in ambiti come:
- Interazioni con l'interfaccia web
- Integrazioni personalizzate
- Implementazioni headless di Odoo
- Sincronizzazioni con sistemi esterni
Quando qualcosa non va in una chiamata JSON-RPC, Odoo risponde con un messaggio d'errore che di solito si presenta così:
RPC_ERROR: Odoo Server Error
Oppure come oggetto JSON di errore nelle risposte API.
Questa guida illustra cosa significano gli errori JSONRPC in Odoo e come intervenire per risolverli correttamente.
Cos'è la JSON-RPC in Odoo?
JSON-RPC (JavaScript Object Notation Remote Procedure Call) permette ai client di invocare metodi di Odoo via HTTP usando payload JSON.
Una richiesta JSON-RPC tipica ha questa struttura:
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"service": "object",
"method": "execute_kw",
"args": [
"database_name",
2,
"password",
"res.partner",
"search",
[[["is_company", "=", true]]]
]
},
"id": 1
}
Se il backend incontra un'eccezione durante l'elaborazione, Odoo restituisce una risposta JSON che descrive l'errore.
Cause più comuni degli errori JSONRPC in Odoo
1. Fallimento di autenticazione
Il problema si manifesta quando la richiesta presenta:
- Credenziali non valide
- Nome del database errato
- Sessione scaduta
In questi casi Odoo rifiuta la chiamata.
I guasti di autenticazione sono tra le cause più frequenti di errori JSONRPC.
2. Invocazione di metodo non valida
Succede quando il payload JSON fa riferimento a:
- Un model inesistente
- Un metodo non definito
- Argomenti del metodo errati
Il backend solleva un'eccezione che viene restituita come errore JSONRPC.
3. Campi obbligatori mancanti
Se una chiamata create o write omette campi obbligatori, Odoo genera un errore di validazione che compare nella risposta JSON.
Esempio pratico:
{
"name": "Order 001"
}
Se partner_id è obbligatorio → viene restituito un errore.
4. Restrizioni sui permessi
Se l'utente API non dispone dei permessi necessari per l'azione richiesta, Odoo risponde con un errore di accesso in formato JSON.
Questo succede spesso in ambienti di produzione dove gli utenti di integrazione hanno permessi limitati.
5. ID relazionali non validi
Se un campo Many2one riceve un ID che non esiste, il backend solleva un'eccezione.
Esempio pratico:
{
"partner_id": 99999
}
Se l'ID 99999 non esiste → errore JSONRPC.
6. Violazioni dei vincoli del database
Errori comuni includono:
- Valore duplicato che viola vincoli di unicità
- Violazione di chiave esterna
- Campo NOT NULL non valorizzato
Tali eccezioni possono ricomparire nelle risposte JSONRPC.
7. Timeout del server o operazioni pesanti
Payload grandi o operazioni in bulk possono superare i limiti di timeout, soprattutto in integrazioni ad alto volume.
Come risolvere un errore JSONRPC in Odoo
Passo 1 – Analizza la risposta JSON di errore
Le risposte JSONRPC di solito contengono:
- Tipo di errore
- Messaggio descrittivo
- Traceback del server
Leggi con attenzione i dettagli forniti dall'eccezione lato server.
Passo 2 – Verifica l'autenticazione
Controlla che:
- Il nome del database sia corretto
- L'ID utente o il token di sessione siano validi
- La password o la chiave API siano corrette
- L'utente sia attivo
Passo 3 – Convalida la struttura del payload
Prima di inviare le richieste:
- Assicurati che tutti i campi obbligatori siano presenti
- Verifica che gli ID relazionali esistano
- Evita valori nulli nei campi richiesti
- Controlla i tipi di dato corretti
La validazione strutturata prima dell'invio evita molti errori a runtime.
Passo 4 – Controlla i permessi
Verifica che l'utente di integrazione abbia:
- Permesso di lettura
- Permesso di scrittura
- Permesso di creazione
- Permesso di cancellazione
in base all'operazione che deve eseguire.
Passo 5 – Prova nell'interfaccia di Odoo
Esegui manualmente la stessa azione nell'interfaccia utente di Odoo.
Se fallisce anche lì, è probabile che il problema riguardi i dati o i permessi.
Passo 6 – Esamina i log del server
Se la risposta JSON è troppo generica, consulta i log di Odoo per ottenere il traceback completo.
Come prevenire gli errori JSONRPC
- Buone pratiche per integrazioni robuste:
- Usare utenti API dedicati
- Validare i dati prima dell'invio
- Registrare richiesta e risposta (request/response) in log
- Implementare una gestione degli errori strutturata nell'integrazione
- Evitare operazioni in bulk in un'unica chiamata
Testare i flussi di integrazione in ambienti di staging
Come Dasolo rafforza la comunicazione JSONRPC
Gli errori JSONRPC spesso nascono da sessioni gestite male, strutture di richiesta malformate o logiche server non validate. Poiché JSONRPC alimenta la maggior parte delle interazioni web in Odoo, anche piccole lacune di configurazione possono provocare malfunzionamenti ripetuti sul front-end.
In Dasolo rafforziamo la stabilità di JSONRPC con:
- Validazione strutturata delle richieste
- Gestione controllata delle sessioni
- Pattern chiari di gestione delle eccezioni
- Esposizione sicura degli endpoint
- Log completo delle chiamate API
Un framework di comunicazione coerente riduce gli errori inattesi a runtime e aumenta l'affidabilità della piattaforma.
Conclusione
L'errore “JSONRPC” in Odoo compare quando un'eccezione lato server interrompe la comunicazione tra client e server. Anche se l'errore può sembrare generico, spesso segnala problemi più profondi nella formattazione della richiesta, nell'autenticazione o nella logica server.
Rivedendo attentamente le strutture API, validando gli input e adottando una gestione degli errori prevedibile, gli sviluppatori possono evitare interruzioni ricorrenti causate da JSONRPC. Un livello di comunicazione ben progettato garantisce interazioni più stabili ed efficienti negli ambienti Odoo.