borazslo / szentiras.hu

full website
szentiras.hu
38 stars 5 forks source link

API: 404 hibaüzenet #129

Closed gyuris closed 6 years ago

gyuris commented 7 years ago

Épp egy új Drupal 8 modult készítek a szentiras.hu integrálására. A formázó modul lényege, hogy lekéri a szöveget a szentiras.hu-ról. Még nincs publikálva, de pl. itt látható működés közben: http://szoregiplebania.hu/node/81

A probléma amibe ütköztem, hogy az API hívás nem létező hivatkozás (vagy fordítás) esetén nem JSON üzenettel tér vissza, hanem sima HTML-lel. A dokumentáció szerint:

Minden API hívás JSON formátumú válasszal tér vissza.

Ez a 404-es kezelés szándékos, próbáljam lekezelni valahogy? Vagy adtok valami kezelhető JSON választ?

Pl. ez helyes hívás: [http://szentiras.hu/api/ref/Bölcs 9,13-19/SZIT](http://szentiras.hu/api/ref/Bölcs 9,13-19/SZIT) de ugyanaz, pl. nincs a protestáns fordításban és a válasz nem JSON: [http://szentiras.hu/api/ref/Bölcs 9,13-19/RUF](http://szentiras.hu/api/ref/Bölcs 9,13-19/RUF)

briff commented 7 years ago

Nagyon ígéretes, köszönjük :) Ellenőrizd a HTTP status kódot és 404 esetén hagyd figyelmen kívül a response bodyt. (Amúgy le kell kezelned az 503-at, 500-at is, maintenance alatt se lesz JSON). Belenéztem a kódodba, szerintem elég, ha jQuery ajax híváshoz a done mellé fail callbacket is megadsz.

gyuris commented 7 years ago

Köszönöm a választ. Közben elkezdtem nézni, hogyan kezeljem le. Eddig kész vagyok:

    statusCode: {
      404: function() {
        jQuery(el).replaceWith( '<span class="szentirashu-reference">' 
                                + jQuery(this).text()
                                + '<span class="szentirashu-error">Ilyet szentírási hely nem található (az adott fordításban).</span>' );
      }
    }

Hasonló módon lekezelem akkor az 500-t és 503-t is. Ha használható lesz a modul, szólok.

gyuris commented 7 years ago

A 404, 500, 503-as válaszok lekezelésével készen vagyok. Köszönöm a választ.

Javaslom, hogy a dokumentációban utaljatok erre, hogy nem minden válasz érkezik JSON-ban és ezt a három esetet érdemes külön lekezelni. És ezzel ez a hibajegy le is zárható.