Come organizzare i metodi che controllano la disponibilità del nome utente / email in un'API REST?

3

Sto sviluppando un'API RESTful nel mio progetto, ma non ho esperienza in merito. Per colmare queste lacune ho guardato alcuni video, principalmente da Apigee, che sono fantastici. Una situazione porta molte discussioni sul mio progetto e spero che tu possa aiutarmi a chiarirlo. Il client che utilizza l'API è in grado di creare un utente inviando l'url del mio / degli utenti, ma ha alcuni requisiti come: formato del nome, disponibilità del nome utente, disponibilità della posta elettronica, regione valida e molti altri. Posso facilmente convalidare il formato del nome nella mia app client, sarebbe facile. Il problema è quando si tratta di disponibilità (principalmente se l'e-mail e il nome utente sono disponibili per essere utenti o sono già stati presi). Abbiamo due diverse linee di pensiero sulla mia squadra:

il primo interromperà ogni verifica in un URL diverso, qualcosa del genere / Utenti / EmailAvailable e / Utenti / Nome utenteDisponibile ou / Disponibile / Email e / Disponibile / Nome utente

Affermano che renderebbe l'interfaccia più pulita (più intuitiva) e manterrebbe anche la coesione, poiché un metodo ha una sola responsabilità.

La seconda linea di pensiero è di avere un solo URL / Utente / Verifica e verificherà il nome utente, l'email o entrambi, a seconda del JSON che riceve. Sostengono che richiederebbe solo un viaggio sul server e che la coesione non è un problema perché, dal momento che gli URL non sono necessariamente mappati ai metodi, possono dividere le chiamate in metodi che fanno una cosa ciascuna. Affermano anche che l'interfaccia non dovrebbe preoccuparsi della coesione

Le mie domande: 1- Questi argomenti sulla coesione dalla seconda linea sono validi? 2- Come faresti? (O uno di quelli o qualsiasi altro che tu sappia)

grazie!

    
posta JSBach 04.12.2013 - 00:42
fonte

2 risposte

2
  1. Non è possibile convalidare e creare qualcosa atomicamente con diverse richieste di Api di riposo. Ma se devi davvero farlo, una richiesta HEAD a /users/?[[email protected]|user=aUsername] dovrebbe restituire 404 se non è già esistente. In questo modo non si mette l'aggettivo (disponibile) o verbo (verifica) nell'URL. Mantieni la semplicità.
  2. Vorrei POST Utente / utenti e se fosse stato utilizzato il nome utente o l'e-mail, restituire 409 (conflitto) con spiegazione sia il nome utente che l'email sono già presenti.
risposta data 04.12.2013 - 03:13
fonte
1

Se non si riescono a utilizzare questi metodi REST in modo indipendente in altre parti del sistema, avrei l'unico endpoint REST che accetta un payload JSON contenente tutti i dati ... due campi in questo caso. Ovviamente lo rifatterete sul back-end se doveste aver bisogno di aprire un secondo endpoint che vi permetterà di controllare separatamente. Una connessione funziona anche bene per i dispositivi mobili.

Se prevedi di verificare la disponibilità di e-mail, assicurati di utilizzare un'immagine di verifica captcha. A seconda del tuo budget e dei tuoi requisiti UX, potresti voler introdurre captcha solo se viene eseguito più di n numero di controlli e-mail entro un certo periodo di tempo.

Captcha è faily facile da integrare. Ci sono alcuni fornitori là fuori, ma il più popolare sembra essere link

    
risposta data 04.12.2013 - 04:36
fonte

Leggi altre domande sui tag