Wprowadzenie
Błąd Odoo JSONRPC pojawia się, gdy wywołanie do Odoo wykonane za pomocą protokołu JSON‑RPC kończy się niepowodzeniem. JSON‑RPC to podstawowy kanał komunikacji wykorzystywany przez webowy klient Odoo oraz liczne integracje.
W odróżnieniu od XML‑RPC, JSON‑RPC jest powszechnie stosowany w takich scenariuszach jak:
- Interakcje frontendu webowego
- Integracje niestandardowe
- Headless‑owe wdrożenia Odoo
- Synchronizacje z systemami zewnętrznymi
Gdy coś idzie nie tak podczas wywołania JSON‑RPC, Odoo zwraca odpowiedź z błędem, która zwykle przyjmuje formę:
RPC_ERROR: Odoo Server Error
Albo jako obiekt błędu w formacie JSON w odpowiedzi API.
Ten przewodnik wyjaśnia, co oznaczają błędy JSONRPC w Odoo i jak je skutecznie usuwać.
Czym właściwie jest JSON‑RPC w Odoo?
JSON‑RPC (JavaScript Object Notation Remote Procedure Call) pozwala klientom wywoływać metody Odoo przez HTTP, wysyłając dane w formacie JSON.
Przykładowe wywołanie JSON‑RPC ma strukturę podobną do poniższej:
{
"jsonrpc": "2.0",
"method": "call",
"params": {
"service": "object",
"method": "execute_kw",
"args": [
"database_name",
2,
"password",
"res.partner",
"search",
[[["is_company", "=", true]]]
]
},
"id": 1
}
Jeżeli backend napotka wyjątek, Odoo zwróci odpowiedź z błędem w formacie JSON.
Najczęstsze przyczyny błędów JSONRPC w Odoo
1. Niepowodzenie uwierzytelnienia
Jeżeli żądanie zawiera:
- Nieprawidłowe dane logowania
- Błędną nazwę bazy danych
- Wygasłą sesję
Odoo odrzuca wywołanie.
Problemy z uwierzytelnieniem należą do najczęstszych przyczyn błędów JSONRPC.
2. Wywołanie nieistniejącej metody
Jeżeli ładunek JSON odwołuje się do:
- Nieistniejącego modelu
- Nieistniejącej metody
- Błędnych argumentów metody
Backend zgłosi wyjątek, który wróci jako błąd JSONRPC.
3. Brak wymaganych pól
Jeżeli wywołanie create lub write pomija pola obowiązkowe, Odoo zgłosi błąd walidacji widoczny w odpowiedzi JSON.
Przykład:
{
"name": "Order 001"
}
Jeżeli pole partner_id jest wymagane → wystąpi błąd.
4. Ograniczenia uprawnień
Jeżeli użytkownik API nie ma uprawnień do wykonania akcji, Odoo zwróci w JSON błąd związany z dostępem.
Dzieje się tak często w środowiskach produkcyjnych, gdy konta integracyjne mają ograniczone prawa.
5. Nieprawidłowe identyfikatory relacyjne
Jeżeli pole Many2one otrzyma ID, którego nie ma w bazie, backend zgłosi wyjątek.
Przykład:
{
"partner_id": 99999
}
Jeżeli ID 99999 nie istnieje → błąd JSONRPC.
6. Naruszenia ograniczeń bazy danych
Błędy typu:
- Duplikat wartości klucza — łamanie unikalności
- Naruszenie klucza obcego
- Brak zgodności z not null
Mogą pojawić się w odpowiedziach JSONRPC.
7. Limit czasu serwera lub ciężkie operacje
Duże ładunki lub operacje hurtowe mogą przekroczyć limity czasu, zwłaszcza przy dużym natężeniu integracji.
Jak naprawić błąd JSONRPC w Odoo
Krok 1 – Przeanalizuj odpowiedź JSON z błędem
Większość odpowiedzi JSONRPC zawiera:
- Typ błędu
- Komunikat błędu
- Ślad stosu (traceback)
Uważnie przeczytaj szczegóły wyjątku zwrócone przez backend.
Krok 2 – Sprawdź uwierzytelnianie
Upewnij się, że:
- Nazwa bazy danych jest poprawna
- ID użytkownika lub token sesji są ważne
- Hasło lub klucz API są poprawne
- Konto użytkownika jest aktywne
Krok 3 – Zwaliduj strukturę ładunku
Przed wysłaniem żądań:
- Potwierdź, że uwzględniono wszystkie pola obowiązkowe
- Zwaliduj identyfikatory relacyjne
- Unikaj wartości null w polach wymaganych
- Sprawdź poprawność typów danych
Walidacja po stronie klienta przed wysłaniem danych zapobiega wielu błędom w czasie wykonania.
Krok 4 – Przejrzyj prawa dostępu
Sprawdź, czy konto integracyjne ma:
- Uprawnienia do odczytu
- Uprawnienia do zapisu
- Uprawnienia do tworzenia
- Uprawnienia do usuwania
w zależności od wykonywanej akcji.
Krok 5 – Przetestuj w interfejsie Odoo
Odtwórz tę samą operację ręcznie w UI Odoo.
Jeżeli błąd występuje w UI — najpewniej problem dotyczy danych lub uprawnień.
Krok 6 – Sprawdź logi serwera
Gdy odpowiedź JSON jest ogólnikowa, przejrzyj logi Odoo, aby uzyskać pełny traceback i kontekst błędu.
Jak zapobiegać błędom JSONRPC
- Używaj wydzielonych kont API dla integracji
- Waliduj dane przed wysłaniem
- Loguj treści żądań i odpowiedzi
- Wdróż ustrukturyzowaną obsługę błędów w integracji
- Unikaj wysyłania bardzo dużych operacji w jednym zapytaniu
- Testuj przepływy integracyjne na środowisku stagingowym
W środowiskach kierowanych przez API warto wprowadzić warstwę transformacji i walidacji między systemami zewnętrznymi a Odoo — znacznie ogranicza to liczbę błędów JSONRPC.
W jaki sposób Dasolo wzmacnia komunikację JSONRPC
Błędy JSONRPC zwykle wynikają z niekonsekwentnej obsługi sesji, błędnej struktury żądań lub braku walidacji po stronie klienta. Ponieważ JSONRPC napędza większość interakcji webowych w Odoo, nawet drobne luki konfiguracyjne mogą powodować powtarzalne problemy na froncie.
W Dasolo wzmacniamy stabilność JSONRPC poprzez:
- Ustrukturyzowaną walidację żądań
- Skuteczne zarządzanie sesjami
- Jednolite wzorce obsługi wyjątków
- Bezpieczne wystawianie endpointów
- Szczegółowe logowanie wywołań API
Spójne ramy komunikacji zmniejszają liczbę nieoczekiwanych błędów wykonania i zwiększają niezawodność platformy.
Podsumowanie
Błąd “JSONRPC Error” w Odoo to zazwyczaj efekt wyjątku na backendzie, który przerwał komunikację między klientem a serwerem. Choć komunikat może wyglądać ogólnie, zwykle wskazuje na problemy z formatem żądania, uwierzytelnieniem lub logiką po stronie serwera.
Poprzez systematyczną kontrolę struktur API, rygorystyczną walidację wejść oraz przewidywalne mechanizmy obsługi błędów deweloperzy mogą zapobiegać powtarzającym się zakłóceniom JSONRPC. Dobrze zaprojektowana warstwa komunikacji zapewnia stabilne i wydajne działanie integracji w środowisku Odoo.