In Web API è una buona pratica avvolgere i risultati con il mio modello? [chiuso]

5

Ho un'API Web e sto pensando se sia una buona idea avvolgere sempre il risultato con un mio modello di risultato che conterrà sempre una struttura specifica come:

{
 Data:(of type T generic),
 Messages:[ 
   {Key:"Key1",Messages:["Msg1","Msg2","Msg3"]},
   {Key:"Key2",Messages:["Msg1","Msg2","Msg3"]},
  ],
 MetaData:[ 
   {Key:"",Value:"" },
   {Key:"",Value:"" }
  ]
}

Quindi vedo che questo modello è adatto a tutte le situazioni, ad esempio:

  1. Voglio restituire il successo 20x solo con i dati, riempio solo Dati solo proprietà e lascia vuoti gli altri.
  2. Se voglio restituire lo stato di errore con alcuni messaggi (dallo stato del modello o da qualsiasi altro), riempio solo Messaggi .

Quindi restituisco sempre il mio modello.
È considerato una buona pratica o dovrei restituire un modello diverso a seconda dello stato (successo o fallimento).

Grazie

Aggiornamento 1:
I codici di stato verranno comunque utilizzati per determinare se i messaggi all'interno del modello sono messaggi di errore o solo avvisi o forse informazioni, cosa sono Chiedo qui di abbandonare l'uso dei Codici di stato ma:

is it a best practice to use unified model in all my responses, maybe some times I need to response as BadRequest with data returned with the messages.

    
posta Dabbas 13.10.2015 - 14:05
fonte

2 risposte

3

Credo nel web api Dovresti attenersi alle convenzioni e usare i codici di errore http per indicare un errore.

Pensa a come tratteresti il tuo messaggio dal lato ricevente:

  • Dovresti scrivere una sorta di logica per scoprire realmente se hai ottenuto un errore o un successo.

  • Dovresti spiegare la convenzione ad altri sviluppatori che usano il codice.

Direi che è un po 'di reinventare la ruota. Nel mio team utilizziamo semplicemente i codici di stato HTTP con i messaggi per segnalare errori e sembra funzionare bene. È anche più semplice gestirlo con determinate librerie web che utilizziamo sul lato client.

Modifica dopo l'aggiornamento della domanda: A mio parere, questo si riduce a casi d'uso particolari. Se pensi di usare questo schema partendo sempre da adesso, non ci prenderei in considerazione.

Se intendi introdurlo in un particolare servizio o prodotto ed è veramente vero (che significa che esiste un caso d'uso o un requisito) che dovrai restituire alcuni dati insieme a un errore codice va bene. In questo caso non vedo alcuna soluzione migliore.

    
risposta data 13.10.2015 - 14:54
fonte
0

Considera di restituire messaggi di errore di qualche tipo, se qualcosa è andato storto. Restituire un modello anche se si è verificato un errore probabilmente non è la migliore pratica.

Ad esempio, quando non sono stati trovati dati, restituire null invece è spesso una pratica migliore.

    
risposta data 13.10.2015 - 14:49
fonte

Leggi altre domande sui tag