Indledning
En Odoo REST API Error opstår, når et HTTP‑kald til et Odoo‑endpoint mislykkes. Selvom Odoo som standard tilbyder XML‑RPC og JSON‑RPC, bygger mange moderne løsninger deres egne REST‑endpoints oven på Odoo‑controllers for at imødekomme eksterne systemer.
REST‑API‑fejl rammer ofte:
- Headless‑opsætninger med Odoo som backend
- E‑handelsplatforme og webshops
- Mobile apps, der bruger Odoo som datakilde
- Integrationer mod tredjepartsplatforme
- Middleware og integrationslag mellem systemer
I modsætning til brugerfladefejl viser REST‑problemer sig typisk som HTTP‑statuskoder, for eksempel:
- 400 (Bad Request)
- 401 (Unauthorized)
- 403 (Forbidden)
- 404 (Not Found)
- 500 (Internal Server Error)
Denne guide gennemgår, hvorfor REST‑fejl opstår i Odoo, og giver konkrete trin til at diagnosticere og løse dem.
Hvad er en REST‑API i Odoo?
I Odoo implementeres REST‑endpoints typisk som controllers, der håndterer HTTP‑ruter og JSON‑payloads.
Et simpelt controllereksempel kan se sådan ud:
from odoo import http
from odoo.http import request
class MyController(http.Controller):
@http.route('/api/order', type='json', auth='user', methods=['POST'])
def create_order(self, **kwargs):
# logic here
return {"status": "success"}
REST‑integrationer bygger på flere nøgleelementer:
- HTTP‑metoder (GET, POST, PUT, DELETE)
- Autentificering og autorisation
- JSON‑data som forespørgsels‑ og svarformat
- Korrekt rute‑konfiguration i controlleren
Svigt i et hvilket som helst led i denne kæde udløser typisk en REST‑API‑fejl i Odoo.
Typiske årsager til REST‑API‑fejl i Odoo
1. Autentificeringsfejl (401 Unauthorized)
Hvis anmodningen mangler eller har forkert autentificering, returnerer Odoo en 401.
401 Unauthorized
Typiske årsager er:
- Manglende API‑token
- Forkerte loginoplysninger
- Udløbet session eller token
- Forkert valgt autentificeringsmetode
2. Manglende rettigheder (403 Forbidden)
Når brugeren er logget ind, men ikke har de nødvendige rettigheder, får man 403.
403 Forbidden
Det betyder ofte:
- Manglende adgangsrettigheder på modelniveau
- Forkerte bruggrupper eller rolleindstillinger
- Begrænsende record rules
3. Forkert endpoint (404 Not Found)
Hvis ruten ikke findes på serveren, returneres 404.
404 Not Found
Mulige årsager:
- Forkert URL eller sti
- Module ikke installeret eller aktiveret
- Ruten er forkert konfigureret i koden
- Brug af forkert HTTP‑metode (fx GET i stedet for POST)
4. Ugyldigt payload (400 Bad Request)
Når JSON‑kroppen er ødelagt eller mangler nødvendige felter, får man 400.
400 Bad Request
Eksempler på fejl i payload:
- Påkrævede felter mangler
- Forkerte datatyper (fx streng i stedet for tal)
- Ugyldige relationelle ID'er
5. Backend‑undtagelse (500 Internal Server Error)
Hvis controllerkoden kaster en undtagelse, returneres 500.
500 Internal Server Error
Dette er den hyppigste type REST‑fejl.
Ofte forårsaget af:
- Ubehandlede Python‑exceptions
- Databasebegrænsninger der brydes
- Forkerte relationer/ID‑referencer
- Manglende påkrævede felter
6. CSRF‑problemer
Hvis csrf=True er aktiveret, men der ikke medsendes en gyldig CSRF‑token, mislykkes kaldet.
For API‑endpoints er csrf=False ofte nødvendigt.
Sådan retter du REST‑API‑fejl i Odoo
Trin 1 – Tjek HTTP‑statuskoden
Statuskoden fortæller hurtigt, hvilket område der fejler:
- 400 → Problemer med payload
- 401 → Autentificering mangler eller er forkert
- 403 → Rettighedsproblem
- 404 → Route/URL‑problem
- 500 → Fejl i backend‑logikken
Trin 2 – Verificér ruteopsætningen
Tjek controllerdeklarationen og dens parametre:
@http.route('/api/order', type='json', auth='user', methods=['POST'])
Bekræft følgende:
- At stien/URL'en er korrekt
- At HTTP‑metoden matcher det, du sender
- At auth‑indstillingen passer til brugsscenariet
- At CSRF‑konfigurationen er passende for et API
Trin 3 – Tjek autentificeringsmetoden
Sørg for at:
- API‑tokens er gyldige og ikke udløbne
- Sessions‑cookies er aktive, hvis de bruges
- Den rigtige auth‑type er valgt (auth='user', auth='public' osv.)
Brug en dedikeret integrationsbruger i produktion for at undgå sessionskonflikter.
Trin 4 – Valider payload inden afsendelse
Før du sender anmodningen, skal du sikre dig:
- At alle påkrævede felter er med
- At relationelle ID'er er korrekte og eksisterer
- At felter har korrekt datatype
- At der ikke sendes null for obligatoriske felter
Struktureret inputvalidering mindsker drastisk antallet af REST‑fejl.
Trin 5 – Undersøg serverlogs ved 500‑fejl
Ved 500‑fejl skal du kigge i Odoo‑serverens logfiler.
Søg efter:
Traceback (most recent call last):
Tracebacken viser ofte den egentlige rodårsag og linjenummeret i koden.
Trin 6 – Indbyg ordentlig fejlbehandling i controllers
Lad være med blot at lade ubearbejdede undtagelser boble op:
try:
# logic
except Exception as e:
return {"error": str(e)}
Kontrollerede fejlbeskeder gør integrationer mere robuste og enklere at fejlfinde.
Forebyg fejl i Odoo‑REST‑integrationer
- Brug dedikerede API‑brugere
- Implementér pre‑validering før data rammer Odoo
- Tilføj struktureret exception‑håndtering
- Undgå tung forretningslogik direkte i controllers
- Opsplit store operationer i batches
- Log både indkommende forespørgsler og udgående svar til diagnostics
I komplekse integrationslandskaber reducerer et mellemstykke til validering og transformation antallet af fejl markant ved at sikre, at kun veldannede requests når Odoo.
Sådan bygger Dasolo robuste REST‑integrationer
Mange REST‑fejl i Odoo kan spores til uoverensstemmelser i autentificeringsheaders, forkert konfigurerede controllers eller mangelfuld håndtering af input. Fordi disse endpoints ofte eksponeres eksternt, vil små valideringsfejl hurtigt føre til gentagne fejl.
Hos Dasolo stabiliserer vi REST‑integrationer ved at fokusere på:
- Sikker token‑baseret autentificering
- Tydelig og enkel controllerlogik
- Streng validering af forespørgsler og svar
- Klar permissions‑scoping per endpoint
- Struktureret logging af eksterne kald
En disciplineret REST‑arkitektur mindsker fejl, gør integrationerne mere forudsigelige og øger systemets modstandsdygtighed over tid.
Afslutning
En Odoo “REST API Error” er typisk et symptom på problemer med autentificering, fejlformat i payload, manglende rettigheder eller ubehandlede backend‑exceptions — ikke bare en isoleret teknisk fejl. Den peger ofte på svagheder i endpoint‑opsætningen eller manglende valideringslogik.
Ved at gennemgå controllerimplementeringen, sikre autentificeringsflowet og etablere konsekvent fejlbehandling kan udviklere kraftigt reducere tilbagevendende REST‑afbrydelser. Et dedikeret integrationslag sikrer stabil kommunikation mellem Odoo og eksterne systemer over tid.