Shoud I restituisce direttamente un messaggio di stringa o piuttosto una chiave i18n quando si tratta di API JSON?

5

Supponiamo che l'api di riposo restituisca questo json:

{
    "status" : "fail",
    "data" : { "title" : "A title is required" }
}

Poiché l'applicazione client dovrebbe sempre adattare il messaggio di errore, sarebbe meglio restituire una chiave i18n esplicita che il client avrebbe mappato invece di "Un titolo è richiesto"? :

{
    "status" : "fail",
    "data" : { "title" : "error.creation.title.required" }
}

In effetti, il punto è aspettarsi che il consumatore della richiesta (l'applicazione web, ad esempio), possa tradurre facilmente il messaggio relativo alla sua localizzazione.

    
posta Mik378 29.11.2013 - 00:37
fonte

2 risposte

5
  1. Se stavi definendo un comune formato di errore per l'API, consulta anche "Dettagli problema per le API HTTP ". Non è necessario pronunciare "status: fail" perché dovrebbe essere indicato già nel codice di stato. Puoi usare l'URI "problemType" come chiave.

  2. Per i clienti che non vogliono tradurre da soli il messaggio di errore, dovrebbero utilizzare l'intestazione Accept-Language in modo che il server sappia quale lingua deve parlare.

risposta data 29.11.2013 - 02:23
fonte
0

Un modo per andare sarebbe includere un flag nella richiesta se l'utente vuole avere una chiave i18n.

host/page?somrequest=somevalue&flagi18n=true

Vedendo questo flag, puoi lasciare che la tua API restituisca la chiave i18n. Altrimenti, si restituisce il messaggio nella lingua predefinita.

In questo modo, mantieni le API disaccoppiate dal client. Per me, è una questione di preferenza.

    
risposta data 29.11.2013 - 01:45
fonte

Leggi altre domande sui tag