• Non ci sono risultati.

Di 1. Capitolo 1: Iniziare con Sinatra 2. Osservazioni 2. Versioni 2. Examples 2. Installazione 2. La tua prima app di Sinatra 3

N/A
N/A
Protected

Academic year: 2022

Condividi "Di 1. Capitolo 1: Iniziare con Sinatra 2. Osservazioni 2. Versioni 2. Examples 2. Installazione 2. La tua prima app di Sinatra 3"

Copied!
10
0
0

Testo completo

(1)

sinatra

#sinatra

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

Riferimenti

Documenti correlati

dotata di sistema per l'apertura automatica. L'arresto ai piani deve avvenire con autolivellamento con tolleranza massima 2 cm. Lo stazionamento della cabina ai piani

Quest’ultimo avrà l’onere di elaborare, relativamente ai costi della sicurezza afferenti all’esercizio della propria attività, il documento di valutazione dei rischi e

9.1 Si procederà all’aggiudicazione della gara in presenza almeno di due offerte valide. La procedura di valutazione delle offerte si interrompe quando resta una sola

Al datore di lavoro, titolare delle attività svolte nei luoghi in cui verrà espletato l’appalto, la norma pone l’obbligo di integrare il predetto documento

“Quando va a fare la spesa, secondo lei, quali fra gli ALIMENTI che compra fanno meglio alla salute?”. “In quest’ultimo anno le è mai capitato di cercare informazioni sul

dalle 9,00 alle 11,30 Attività ludico – ricreative: i bambini, divisi per gruppi di 5 unità per età omogenea, alla presenza di un educatore, svolgeranno le

I cancelli saranno scorrevoli di larghezza idonea ed altezza come le barriere di recinzione e l’automatizzati oltre all’accesso pedonale elettrificato e

2 Considerato quanto già indicato nella relazione di fattibilità che descrive l’area oggetto di intervento, si riportano di seguito dati necessari per definire