Un servizio web dovrebbe restituire un messaggio di errore se riceve parametri sconosciuti?

5

Dispongo di un servizio Web che consente di recuperare utenti: http://example.com/users . Restituisce un elenco di utenti.

Questo servizio accetta un numero di parametri ( age , gender ) per selezionare quali utenti recuperare. Esempi:

  • http://example.com/users?age=34
  • http://example.com/users?gender=male

Questo servizio dovrebbe restituire un messaggio di errore se il client passa un parametro sconosciuto ? Esempio:

>>> GET http://example.com/users?cylinders=16 
<<< 400 Bad Request
<<< { 'message' : "Invalid parameter 'cylinders'" }

(Per me è chiaro che un servizio web dovrebbe convalidare i parametri che riceve, ma il caso dei parametri sconosciuti non mi è chiaro)

    
posta Silvan Mühlemann 21.08.2015 - 15:04
fonte

1 risposta

6

Tecnicamente, tale controllo richiede un passaggio aggiuntivo. Devi elencare tutti i parametri e confrontare questo elenco con l'elenco di quelli consentiti. Quindi, se decidi di accettare un parametro aggiuntivo, devi modificare questo elenco, richiedendo ancora più lavoro. Tutto questo codice deve essere testato pure.

Qual è il vantaggio? Il vantaggio è che un programmatore che ha fatto un refuso come:

                             ↓↓
http://example.com/users?gendre=male

vedrà immediatamente un utile messaggio di errore, invece di ricevere l'elenco di tutti utenti e chiedersi perché il filtro non funzioni. È grandioso e mi auguro che tutte le API siano state utili e pronte per i programmatori.

Sta a te decidere se questo vantaggio valga la pena di scrivere codice e test aggiuntivi.

Uno dei casi in cui non dovresti preoccuparti è quando sviluppi tu stesso le librerie client. Se fornite tali librerie nelle lingue più diffuse (Java, Python, Ruby, C ++, C #, ObjectiveC, PHP), potrebbe non essere così utile gestire il caso in cui è stato specificato un parametro non supportato.

    
risposta data 21.08.2015 - 15:26
fonte

Leggi altre domande sui tag