sinatra
#sinatra
Sommario
Di 1
Capitolo 1: Iniziare con Sinatra 2
Osservazioni 2
Versioni 2
Examples 2
Installazione 2
La tua prima app di Sinatra 3
Capitolo 2: Routing 4
Examples 4
Cos'è il routing 4
Corrispondenza del percorso basato su Regexp 4
Disponibili i verbi per il routing di Sinatra 5
Sinatra Route Parameters 6
Titoli di coda 8
Di
You can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: sinatra
It is an unofficial and free sinatra ebook created for educational purposes. All the content is
extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official sinatra.
The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.
Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to info@zzzprojects.com
https://riptutorial.com/it/home 1
Capitolo 1: Iniziare con Sinatra
Osservazioni
Sinatra è un semplice Ruby DSL per la creazione rapida di applicazioni web.
Ha funzionalità incorporate per il routing, l'utilizzo di modelli, il servizio di file statici, helpers, gestione degli errori e molti altri argomenti.
http://www.sinatrarb.com/intro.html
Versioni
Versione Data di rilascio
2.0.0beta2 2016/08/22 2.0.0beta1 2016/08/22 1.4.7 2016/01/24 1.4.0 2013/03/15
1.3.0 2011-10-01
1.2.0 2011-03-02
1.1.0 2010-10-23
1.0.0 2010-03-23
0.9.0 2009-01-18
0.3.0 2008-08-31
0.2.0 2008-04-11
0.1.0 2007-10-04
Examples
Installazione
Puoi installare Sinatra come una gemma globale:
gem install sinatra
https://riptutorial.com/it/home 2
o aggiungilo al Gemfile di un progetto
# in Gemfile:
gem 'sinatra'
ed esegui l' bundle install .
La tua prima app di Sinatra
# app.rb
require 'sinatra'
get '/' do
'Hello, Universe!' end
Installa Sinatra:
gem install sinatra
Esegui l'app:
ruby app.rb
Questo è tutto! Accedi alla tua app su http: // localhost: 4567
Leggi Iniziare con Sinatra online: https://riptutorial.com/it/sinatra/topic/4533/iniziare-con-sinatra
https://riptutorial.com/it/home 3
Capitolo 2: Routing
Examples
Cos'è il routing
In Sinatra, il routing è il modo in cui la tua app risponde alle richieste, dal percorso della richiesta (ad esempio /welcome ) e dal verbo HTTP utilizzato (ad esempio GET o POST ). Il modo in cui una richiesta è scritta è la seguente:
<http-verb> <path> do
<code block to execute when this route is requested>
end
Ecco un esempio che risponde alle richieste GET al percorso /hello restituendo una pagina che dice "Ciao, come va?":
get "/hello" do
return "Hi, whats up"
end
Sinatra risponde solo alle rotte che tu definisci. Se non si definisce una rotta, Sinatra restituisce una 404 Page Not Found errore 404 Page Not Found .
Sinatra risponde alle rotte nell'ordine in cui sono definite. Se sono disponibili più route che
possono corrispondere a una determinata richiesta (vedere "Corrispondenza del percorso basato su Regexp"), viene restituito il primo percorso che soddisfa la richiesta.
NOTA: Sinatra tratta le rotte con e senza la barra di avanzamento ( / ) come 2 percorsi diversi e distinti. Ovvero, get '/hello' e get '/hello/' per impostazione predefinita, corrispondenti a diversi blocchi di codice. Se si desidera ignorare la barra di avanzamento finale e considerare entrambe le rotte come uguali, è possibile aggiungere ? dopo la forward-slash per renderlo opzionale, in questo modo: get '/hello/?' . Questo usa la capacità di Sinatra di usare espressioni regolari per la corrispondenza delle rotte (più su questo sotto).
Corrispondenza del percorso basato su Regexp
Quando si abbina il percorso di un percorso, è possibile farlo esplicitamente, facendo corrispondere solo un percorso, in questo modo:
get "/hello" do return "Hello!"
end
Puoi anche usare un'espressione regolare per abbinare percorsi complessi. Qualsiasi percorso che corrisponda all'espressione regolare eseguirà quel blocco di codice. Se più percorsi possono
https://riptutorial.com/it/home 4
potenzialmente corrispondere alla richiesta, viene eseguito il percorso con la prima corrispondenza.
Ecco un esempio tipico di un percorso che corrisponde a percorsi che includono /user/ seguito da una o più cifre (presumibilmente, ID utente), ad es. GET /user/1 :
get /\/user\/\d+/ do "Hello, user!"
end
L'esempio sopra corrisponde a /user/1 , ma corrisponderà anche /delete/user/1 e
/user/1/delete/now , poiché la nostra espressione regolare non è molto restrittiva e consente una corrispondenza parziale con qualsiasi parte del percorso.
Possiamo essere più espliciti con la regexp e dirgli di abbinare esattamente il percorso, usando le direttive \A e \z per ancorare la partita all'inizio e alla fine del percorso:
get /\A\/user\/\d+\z/ do "Hello, user!"
end
Questo percorso non corrisponderà /delete/user/1 o /user/1/delete/now causa dell'ancoraggio della partita.
Ignorare il trascinamento /
Anche la nostra route di esempio sopra non corrisponde a /user/1/ (con forward-slash finale). Se si desidera ignorare la barra finale alla fine della rotta, regolare la regexp per rendere la barra opzionale ( notare la \/? Alla fine ):
get /\A\/user\/\d+\/?\z/ do
"Hello, user! You may have navigated to /user/<ID> or /user/<ID>/ to get here."
end
Catturare le corrispondenze del percorso
Finora, abbiamo confrontato le traccie con espressioni regolari, ma cosa succede se vogliamo utilizzare i valori corrispondenti nel nostro blocco di codice? Seguendo il nostro esempio, come facciamo a sapere qual è l'ID dell'utente quando viene eseguito il percorso?
Possiamo catturare la parte desiderata del percorso e utilizzare la variabile param[:captures]
Sinatra per lavorare con i dati all'interno del percorso:
get /\A\/user\/(\d+)\/?\z/ do
"Hello, user! Your ID is #{params['captures'].first}!"
end
Disponibili i verbi per il routing di Sinatra
Ci sono un certo numero di verbi di routing disponibili in Sinatra, che corrispondono direttamente
https://riptutorial.com/it/home 5
ai verbi http
get '/' do
.. get some data, a view, json, etc ..
end
post '/' do
.. create a resource ..
end
put '/' do
.. replace a resource ..
end
patch '/' do
.. change a resource ..
end
delete '/' do
.. delete something ..
end
options '/' do
.. appease something ..
end
link '/' do
.. affiliate something ..
end
unlink '/' do
.. separate something ..
end
Sinatra Route Parameters
Ovviamente puoi passare i dati alle rotte di Sinatra, per accettare i dati nei tuoi percorsi puoi aggiungere i parametri di percorso. È quindi possibile accedere a un hash params:
get '/hello/:name' do
# matches "GET /hello/foo" and "GET /hello/bar"
# params['name'] is 'foo' or 'bar' "Hello #{params['name']}!"
end
Puoi anche assegnare i parametri direttamente alle variabili come facciamo di solito negli hash di Ruby:
get '/hello/:name' do |n|
# matches "GET /hello/foo" and "GET /hello/bar"
# params['name'] is 'foo' or 'bar' # n stores params['name']
"Hello #{n}!"
end
È inoltre possibile aggiungere parametri jolly senza nomi specifici utilizzando gli asterischi.
https://riptutorial.com/it/home 6
Possono quindi essere accessibili usando params ['splat']:
get '/say/*/to/*' do
# matches /say/hello/to/world
params['splat'] # => ["hello", "world"]
end
Leggi Routing online: https://riptutorial.com/it/sinatra/topic/4692/routing
https://riptutorial.com/it/home 7
Titoli di coda
S.
No Capitoli Contributors
1 Iniziare con Sinatra Arman H, Community, mhutter, tpei
2 Routing aisflat439, Arman H, thesecretmaster, tpei
https://riptutorial.com/it/home 8