Come rendere la mia app web riposante

2

Ho un'applicazione web che voglio rendere RESTful. Ecco la struttura dell'app:

  1. Il livello principale ha un sacco di schermate di ricerca, sono fondamentalmente schede che ricercano diverse parti del database con parametri diversi.
  2. Una volta completata la ricerca, mostriamo i risultati della ricerca in una nuova scheda, all'interno di questa scheda c'è una tabella con un elenco di risultati.
  3. Dall'elenco dei risultati possiamo eseguire il drill-down dei singoli dettagli per ogni riga (si aprono anche in una nuova scheda)
  4. All'interno dei dettagli ci sono ulteriori dettagli aggiuntivi (e alcune ricerche secondarie relative all'elemento). Questi dettagli aggiuntivi sono anche aperti in una nuova scheda.

Quindi, ora voglio rendere questa app RESTful - l'obiettivo è che le persone condividano facilmente le loro ricerche e schermate, abbiano URL più semplici, si liberino di alcune informazioni memorizzate nella sessione.

  • È fattibile per il design che dobbiamo rendere RESTful?

  • La difficoltà principale che vedo è che abbiamo più schede con ricerche e dettagli diversi, come posso rifletterlo nell'URL?

  • Inoltre, la ricerca potrebbe essere piuttosto complessa: gli utenti possono inserire 50 filtri diversi e potrebbe inserire più ID - fino a mille a lo stesso tempo. Quale sarebbe la soluzione preferita in questo caso?

Se questo non funziona, c'è un modo per avere diverse schede che corrispondono a URL diversi in un URL?

    
posta Roman Goyenko 27.02.2013 - 18:45
fonte

2 risposte

1

Come ho capito la tua domanda devi rendere nota la tua applicazione di una serie di schede aperte (0 o più) e di una serie di parametri di ricerca. Perché un approccio riposante richiede una quantità limitata di parametri e una lunghezza dell'URL non superiore a 2000 caratteri (vedi restful max url length ) devi in qualche modo memorizzare i tuoi dati nel database, assegnare un id e usare questo id nella tua applicazione restful invece dell'intera lunghezza della stringa.

Pertanto, prima di tutto ridimensioni ogni scheda possibile

http://myapplication/search/query=something
http://myapplication/parameters/bgcolor=fff
http://myapplication/credits/user=john.doe

Quindi crei due tabelle nel database in cui hai una relazione molti a uno con i tuoi parametri, dove l'una parte rappresenta l'URL finale e il lato più rappresenta la serie di schede.

Ad esempio

CREATE TABLE RESTFUL_PAGE (INT id, VARCHAR page_name, PRIMARY KEY id);
CREATE TABLE RESTFUL_TABS (INT id, VARCHAR url, PRIMARY KEY id, FOREIGN KEY id REFERENCES RESTFUL_PAGE.id);
    
risposta data 28.02.2013 - 08:05
fonte
1

Il primo passo nello sviluppo di qualsiasi servizio REST è identificare quale tipo di risorse stai per esporre.

Per quanto ne so, hai alcuni tipi di risorse:

  • Tabelle dei risultati di ricerca
  • Visualizzazioni dettagliate dei record
  • Raccolte di query miste e viste dettagliate (set di "schede" di ciascun utente)

Ogni tipo di risorsa dovrebbe avere un URL. Ma ciò che entra nel tuo URL non è importante , purché sia univoco per quella risorsa.

Dato che nel tuo caso non è fattibile mettere tutti i parametri che identificano le tue risorse nell'URL, dovrai generare ID univoci e memorizzare i parametri in una tabella di ricerca da qualche parte. Oppure puoi combinare entrambe le strategie:

http://myapplication/users/johnsmith/tabs
http://myapplication/query/AJEL32339?page=1
http://myapplication/details/9383721

Una volta che disponi di URL per le tue risorse, condividere i risultati è facile: basta fornire un pulsante "Condividi questi risultati" con l'URL per tali risultati. Se qualcuno visita direttamente una schermata dei risultati o dei dettagli, proponi di aggiungerlo alla propria raccolta personale di schede.

    
risposta data 28.02.2013 - 04:23
fonte

Leggi altre domande sui tag