Responskoder og feilhåndtering
APIet benytter HTTP-responskoder for å gi tilbakemelding på om forespørselen gikk bra eller ikke.
HTTP-responskoder
Responskoder for en forespørsel som gikk OK
| Kode | HTTP-betydning | Betydning i API |
|---|---|---|
| 200 | OK | Respons på en GET/PUT-metode som gikk bra |
| 201 | Created | Respons på en POST-metode som gikk bra |
| 203 | No Content | Respons på en DELETE-metode som gikk bra |
Responskoder for en forespørsel med feil
| Kode | HTTP-betydning | Betydning i API |
|---|---|---|
| 400 | Bad Request | Feil i input-data til metode |
| 401 | Unauthorized | Manglende pålogging, feil brukernavn/token |
| 403 | Forbidden | Manglende tilgang uavhengig av pålogging / Konto stengt. |
| 404 | Not Found | Fant ingen ressurs med denne URLen |
| 405 | Method Not Allowed | Metoden er ikke tilgjengelig for denne ressursen. |
| 500 | Internal Server Error | Uventet feil |
| 503 | Service Unavailable | Throttle-grense overskredet/ nedetid eller oppgradering av APIet |
Hvordan vet jeg om forespørselen gikk bra?
Du må alltid sjekke HTTP-returkoden du får tilbake fra APIet. Dersom koden ikke er 200, 201 eller 203 har det skjedd en feil som du må håndtere.
- for kall med HTTP-metodene GET eller PUT : Sjekk at koden er 200 (OK)
- for kall med HTTP-metoden DELETE: Sjekk at koden er 203 (No content)
- for kall med HTTP-metoden POST: Sjekk at koden er 201 (Created)
Hvordan vet jeg hva som er feil?
Det vanligste er feil i validering av inputdata, dvs parametere mangler eller er feil. I slike tilfeller returnerer APIet responskoden 400 Bad Request sammen med en XML som forklarer feilen.
Eksempel 1: Respons når input-XML mangler i POST
<?xml version="1.0" encoding="utf-8"?>
<response status="error" http_code="400">
<errors>
<error>
<message>Invalid input XML structure or encoding.</message>
</error>
</errors>
</response>
Eksempel 2: Respons når obligatoriske felter er ikke fylt ut i input-XML
<?xml version="1.0" encoding="utf-8"?>
<response status="error" http_code="400">
<errors>
<error>
<message>The num_due_days field is required.</message>
<field>num_due_days</field>
<row_index/>
</error>
<error>
<message>At least one invoice line is required.</message>
<field>invoice_lines</field>
<row_index/>
</error>
<error>
<message>A main recipient is required.</message>
<field>recipient_id</field>
<row_index/>
</error>
</errors>
</response>