Applicare il design RESTful a un intero sito Web?


11

Tutto questo può sembrare molto newbish, ma sto cercando di avvolgere la mia testa nel progettare un sito Web che sia completamente RESTful. Capisco di applicare il design RESTful a cose come Utenti, Foto, Post di Blog, ecc. Perché penso a loro come "oggetti".

Ma che dire di una pagina "chi siamo". Che tipo di risorsa è quella? È anche una risorsa nel senso RESTful della parola? Inoltre, supponiamo che vada all'URL "http://www.example.com/", quale risorsa sto chiedendo? La risorsa indice?


Penso che siano necessari alcuni chiarimenti. Qual è il tuo obiettivo finale. Qual è la necessità di un design riposante. prendendo riposante dall'equazione, che bisogno stai cercando di soddisfare?
Jonathan Kaufman,

1
L'obiettivo finale è un sito Web completo. Strutturare un sito Web attorno a un design riposante sembra avere senso in base al modo in cui funziona il web. Non sono sicuro di come applicare quel tipo di design a cose che non sembrano risorse, come una pagina about o contact.
TaylorOtwell,

Risposte:


6

Il modello di risorse del sito Web RESTful più comune che vedo è quello di aggiungere una vista all'URI:

/ resourcetype / identifier [/ view ] [/ page] [? filterparams]

Quando non c'è vista , si serve semplicemente una vista predefinita. Nel tuo caso:

  • / - una richiesta per example.comrestituisce la visualizzazione predefinita per la risorsa di livello superiore: il tuo sito Web.
  • / aboutus : la vista "Chi siamo" della risorsa di livello superiore. Oppure, in alternativa, aboutuspotrebbe essere un identificatore denominato per una risorsa nell'ambito del CMS di livello superiore. *
  • / customers / 1 / aboutus : questa richiesta indicherebbe una vista "Chi siamo" nell'ambito del cliente 1 .

Detto questo, a volte è meglio sfumare un po 'per una migliore semantica. Ad esempio, StackOverflow utilizza RESTful / questions / [id] per le domande, ma la pagina Ask Question è / questions / ask che non è molto RESTful ( asknon è una questionsrisorsa) ma ha molto senso usare semplici mortali.


* Nei CMS di livello superiore, il tipo di risorsa viene spesso, ma non sempre, rimosso perché ridondante.


10

Tieni presente che il design RESTful in sé è destinato a fornire uno standard in base al quale il Web diventa programmabile in modo uniforme. Non è sempre appropriato o utile inserire il tuo intero sito web rivolto all'uomo nella pura semantica REST.

Quando hai risorse, è utile considerare le loro rappresentazioni. È anche importante considerare gli altri principi di progettazione di REST, come gli apolidi, e il modo in cui incidono sulle prestazioni e sull'usabilità del tuo sito Web. Ma ricorda che REST è uno strumento, non un obiettivo. È un mezzo, non un fine.

Usa la semantica RESTful ove utile , dopo averne compreso lo scopo e i benefici, e non sudare se il tuo sito non è perfettamente RESTful. Sarebbe quasi impossibile per qualsiasi sito non banale in ogni caso.

TL; DR : REST è uno strumento. Usalo quando e dove è utile ma non essere vincolato da esso.


2
+1 C'è di più da riposare degli URL.
Josh Noe,

Ajax, REST e collegamenti esterni al tuo sito REST possono essere un incubo. La ringrazio per la risposta.
Johnny,

4

Ma che dire di una pagina "chi siamo" [?] Che tipo di risorsa è quella?

Complesso. Niente di sbagliato in una risorsa che ha componenti, pezzi o struttura.

Le risorse non sono "righe di database relazionali" o altre cose atomiche. Sono risorse.

I database orientati ai documenti lo gestiscono in modo più elegante perché una risorsa può essere più grande e strutturata.

È anche una risorsa nel senso RESTful della parola?

Sì.

Inoltre, supponiamo che vada all'URL "http://www.example.com/", quale risorsa sto chiedendo?

No.

Stai chiedendo la risorsa "aboutus". È possibile (ma strano) che una risorsa sia un singleton. Nessun ID e non un "elenco".

http://www.example.com/aboutus/?format=xml

Restituisce un documento XML complesso con molti pezzi e parti. Niente di sbagliato in questo.

La risorsa indice?

Non significa molto in un senso "RESTful". La pagina "indice" è per le persone. Un'applicazione che utilizza un'API RESTful è progettata per richiedere tipi specifici di risorse.


4
+1 Vorrei prendere in giro un punto importante della tua risposta: REST è un paradigma programmabile; non è necessariamente destinato al consumo umano.
Rein Henrichs,

1

Terrei il mio punto di vista indipendente dal back-end. Puoi chiedere al back-end risorse come cose che vanno sulla fisarmonica, la barra di navigazione e altri oggetti che riguardano il corpo. Tuttavia, è necessario lasciare l'elaborazione di queste rappresentazioni delle risorse sul codice client, che alla fine le renderà secondo i requisiti.


1

La risorsa per "Chi siamo" è ... Us :) er, You. Pensa agli attributi di te che vuoi pubblicizzare e arrotolali come un nome con una rappresentazione.

Questi valori non devono provenire da un database ... probabilmente saranno un insieme di valori di stringa, e quelli possono provenire da config, o forse anche hard-coded in una classe.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.