Fejlhåndtering

I denne artikel:


Attention   

 

Introduktion

Når der opstår fejl, svarer API'et med detaljeret information omkring hvad der gik galt, samt hvilken del af forespørgslen der forårsagede fejlen. Et fejl response kan høre under en af følgende to kategorier: Interne fejl og valideringsfejl.

Uanset typen af fejl, vil svaret altid være struktureret på samme måde, og indeholde en message post som beskriver fejlen, samt en category post som beskriver fejltypen, og en locations post som beskriver hvilket sted i forespørgslen fejlen opstod. Ligeledes suppleres med path, som viser stien til forespørgslen eller mutationen i den pågældende request som skabte fejlen –dette kan være nyttigt hvis flere forespørgsler eller mutationer er samlet i én request.

 

Fejl under afvikling af mutationer

Hvis der opstår fejl under en mutation, annulleres alle ændringer som udføres af den pågældende request. Derfor vil, uanset grunden til fejlen, alle data forblive uændret, som hvis mutationen slet ikke var blevet eksekveret. Dette sikrer integriteten af dine data, og gør systemets aktuelle tilstand gennemskuelig på alle tidspunkter.

 

Interne fejl

Opstår en serverfejl, vil du blive præsenteret for en fejl i stil med følgende:


{
  "errors": [
    {
      "message": "Internal server error",
      "category": "internal",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "orders"
      ]
    }
  ],
  "data": []
}

 

Valideringsfejl

En anden type fejl er valideringsfejl. Denne fejltype opstår hvis de supplerede data er ugyldige. Følgende eksempel demonstrerer dette ved, at forsøge at oprette en side inde i en mappe der ikke eksisterer:

POST {shop_domain}.api.mywebshop.io/graphql


mutation {
  pageCreate(input: {folderId: 123, type: text}) {
    id
  }
}

Response


{
  "errors": [
    {
      "message": "The given data was invalid.",
      "category": "graphql",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "pageCreate"
      ],
      "validation": {
        "input.folderId": [
          "validation.exists"
        ]
      }
    }
  ],
  "data": []
}

I tilfælde af valideringsfejl, vil errors posten i det returnerede response også indeholde en validation sektion, som opregner alle valideringsfejl indekseret ud fra stien til de ugyldige data i inputtet.

Attention   

     POST {shop_domain}.api.hostedshop.dk/graphql