Domanda

Stiamo ri-sviluppando il nostro funzionalità BuyOnline e lo stiamo facendo nel modo RESTful.

Il processo è un tre passo uno e il cliente viene chiesto di inserire i dati ad ogni passo.

Diciamo che i tre URL sono;

/step1.aspx

/step2.aspx

/step3.aspx

Ogni passo è abbastanza autonomo e non richiede i dati da uno qualsiasi degli altri passaggi.

La domanda è: come faccio a fermare i clienti a navigare direttamente a STEP2 w / out primo completando i dettagli in step1 dato ogni passo non sa nulla del passaggio precedente?

So che posso aggiungere una proprietà al mio modello di oggetti che mi dice che passo è stato l'ultimo, ecc, ma non che genere di rompere l'intero principio REST?

Anche io non voglio controllare il mio modello come se i dettagli in un passaggio precedente sono state fileld in causa ancora una volta che viola i principi REST.

Penso che sto lentamente rassegnarmi a un concetto che ho bisogno (qualcosa) a dirmi dove sono stato, ma io non voglio questo.

Nel caso / Può il controllore forse rilevare che la storia non contiene il passaggio precedente ponendo il controllo di nuovo a dove penso che dovrebbe essere?

È stato utile?

Soluzione

URL

REST dovrebbero rappresentare entità . per esempio. libri / ordini / foto ecc.

Credo che la confusione di cui sopra è che si sta cercando di rappresentare una prenotazione sequenza in termini REST come entità, e (ovviamente) non lo sono. Così gli oggetti che i clienti possono scegliere, i loro ordini, ecc possono essere utilmente rappresentati in questo modo. Altri elementi del processo non dovrebbe essere.

Si può sostenere che la fase 1 rappresenta un indirizzo (per amor di discussione). Ma POSTing un oggetto indirizzo è distinto da immettere i dati in una forma e permettendo la navigazione a / da pagine correlate. Tale operazione ha una sequenza o flusso ad esso, ed è concettualmente più ricco semplicemente POSTing / Geting / deleteing un indirizzo. Hai Illustrato questo sostenendo che si desidera evitare che qualcuno completato il passaggio 2 senza aver completato la fase 1, ecc.

Altri suggerimenti

Quando si passa da step1.asx a step2.asx, passare un parametro query che contiene qualche chiave che indica al server che step1 è stata visitata. Ad esempio, step1.asx ha a href per step2.asx? Qualunque = a92jv29.

Il "a92jv29" può essere, per esempio, timestamp criptato dal server. Si può facilmente verificare che sia valido (non scaduto e non dal futuro) nel lato server. Non c'è bisogno di memorizzare lo stato.

Il tuo URL potrebbe avere nomi migliori, dovrebbe come "terms.aspx", "registration.aspx", o qualsiasi altra cosa, ma che è strettamente non è necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top