Quale di queste implementazioni è più appropriata per il mio REST API?

0

Sfondo

Quindi ho un'API REST che consente alle applicazioni client di accedere e manipolare i dati degli utenti.

Sto scrivendo una classe Objective-C per l'utilizzo semplice di questa API REST, ma sono bloccato tra due metodi di implementazione.

Metodo 1

class MYClient
    string username
    string password
    methods for using GET, PUT, POST, DELETE on questions
    // questions are dictionaries with 'title' and 'body' strings

Metodo 2

class MYUser
    string username
    string password
    array  tokens
class MYToken
    string title
    string body

// classes inherently sync themselves to the server in their initializers, setters, and getters

Domande

  • Esiste uno che è più appropriato per l'uso in (ad esempio) app iOS?
  • Esiste uno più appropriato in generale?
  • Quali sono i distinti vantaggi del Metodo 1 rispetto al Metodo 2 e viceversa?
posta Patrick Perini 16.02.2012 - 19:28
fonte

1 risposta

1

La differenza sarà il numero e la granularità delle richieste HTTP che passano attraverso la rete.

Il metodo 1 invierà un numero minore di richieste più grandi che eseguono operazioni su operazioni batch. Il metodo 2 invierà richieste più piccole ogni volta che viene modificata la proprietà di un oggetto.

Il metodo 1 ti darà anche la possibilità di accodare un sacco di modifiche sul lato client, quindi dare all'utente la possibilità di annullare o confermare le modifiche. Il Metodo 2 impegnerà ogni modifica individualmente e immediatamente. Se l'utente annulla o annulla un'operazione, sarà necessaria una seconda richiesta per annullare il lato server delle modifiche.

Basandomi esclusivamente sui loro meriti, preferisco il Metodo 1. Tuttavia, quale è più appropriato per la tua app dipende dalla funzionalità che stai cercando.

UPDATE: Nel metodo 1, MyClient.DoSomething() non deve "fare qualcosa" a un oggetto alla volta. Supponi di voler creare 5 nuovi oggetti MyUser . Non devi chiamare MyClient.Create(newMyUser) 5 volte, una volta per ogni nuovo oggetto MyUser . Il tuo metodo Create() può prendere una matrice di oggetti e tutti i 5 nuovi oggetti MyUser possono essere inviati al server nel corpo di un singolo POST. Allo stesso modo, supponi di voler aggiornare le proprietà UserName e Password sullo stesso oggetto MyUser . Il metodo 2 risulterebbe in 2 richieste, ciascuna che invia una copia dell'intero oggetto MyUser per ogni modifica di proprietà. Il metodo 1 consente di apportare le modifiche a entrambe le proprietà lato client, quindi invia l'oggetto MyUser con entrambe le modifiche alle proprietà sul server in un singolo PUT. In entrambi gli scenari, il Metodo 1 offre la possibilità di ritardare le modifiche al server fino a quando non si chiama il metodo appropriato in MyClient e si passa gli oggetti modificati. Nel Metodo 2, le modifiche a ciascun oggetto vengono inviate al server immediatamente e individualmente.

    
risposta data 16.02.2012 - 19:49
fonte

Leggi altre domande sui tag