Basi di Sinatra
Applicazioni web leggere
Basi di Sinatra è una lezione Ruby Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Ruby Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Ruby Academy include 4 lezioni in totale.
Che cos'è Sinatra
Sinatra è una DSL leggera per creare applicazioni web in Ruby con il minimo sforzo.
- Nessuna convenzione complessa come in Rails
- Definizione diretta delle route in un unico file
- Ideale per piccole app, API e prototipi
Descriva i verbi HTTP e i percorsi, quindi restituisca il corpo della risposta.
require 'sinatra'
get '/' do
'Hello from Sinatra!'
endInstallazione di Sinatra
Sinatra è una gem. La installi con il comando gem oppure tramite un Gemfile.
gem install sinatra- In alternativa, aggiunga
gem 'sinatra'a un Gemfile ed eseguabundle install
Esegua l'app con ruby app.rb: per impostazione predefinita, il servizio sarà disponibile sulla porta 4567.
# Gemfile
source 'https://rubygems.org'
gem 'sinatra'
gem 'puma'La prima route
Una route associa un verbo HTTP a un percorso URL e a un blocco. Il valore restituito dal blocco diventa il corpo della risposta.
get,post,put,deletecorrispondono ai metodi HTTP- L'ultima espressione del blocco viene inviata al client
require 'sinatra'
get '/hello' do
'Hello, world!'
end
get '/bye' do
'Goodbye!'
endRestituire HTML
Poiché il valore restituito è semplicemente una stringa, può restituire direttamente HTML grezzo.
- Utile per pagine rapide senza un motore di template
- Per le applicazioni reali, preferisca le view ERB o HAML
require 'sinatra'
get '/' do
'<h1>Welcome</h1><p>This is my Sinatra app.</p>'
endModellare una risposta in Ruby puro
Prima di collegare HTTP, può modellare ciò che restituisce un handler usando un semplice metodo. Questa è la logica che una route chiamerebbe.
- Mantenga la logica di business fuori dai blocchi delle route
- Rende il codice testabile senza un server
def greeting(name)
"Hello, #{name}!"
end
puts greeting('Sinatra')Verbi HTTP
Sinatra supporta tutti i comuni verbi HTTP come metodi delle route.
getlegge i datipostcrea i datiput/patchaggiorna i datideleterimuove i dati
require 'sinatra'
post '/users' do
'Creating a user'
end
delete '/users/:id' do
"Deleting user #{params['id']}"
endImpostare i codici di stato
Controlli il codice di stato HTTP con l'helper status.
status 404imposta lo stato Non trovatostatus 201segnala una risorsa creata- Il valore predefinito è 200 OK
require 'sinatra'
get '/missing' do
status 404
'Not found'
endConfigurazione con set
Sinatra si configura con set, enable e disable.
set :port, 8080modifica la porta di ascoltoset :bind, '0.0.0.0'accetta connessioni esterneenable :loggingattiva i log delle richieste
require 'sinatra'
set :port, 8080
set :bind, '0.0.0.0'
get '/' do
'Configured app'
endFiltri before
Un before filter viene eseguito prima di ogni richiesta corrispondente. È ideale per operazioni di preparazione come l'autenticazione o l'impostazione delle intestazioni del contenuto.
- Viene eseguito nello stesso contesto delle route
- Può leggere e modificare
paramse le intestazioni della risposta
require 'sinatra'
before do
content_type :json
end
get '/' do
'{"ok": true}'
endApp modulari
Per i progetti più grandi, utilizzi lo stile modulare creando una sottoclasse di Sinatra::Base.
- Mantiene isolate più app
- È più facile da montare sotto Rack
- Chiami
run!per avviarla manualmente
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'Modular Sinatra'
end
end
MyApp.run!Simulare localmente un router
Può imitare la logica di routing di Sinatra con un semplice dispatcher basato su hash per comprendere il concetto.
- Le chiavi sono percorsi e i valori sono proc che fungono da handler
- La ricerca restituisce il corpo della risposta
routes = {
'/' => -> { 'Home' },
'/about' => -> { 'About us' }
}
puts routes['/'].call
puts routes['/about'].callVerifica rapida
Verifichi la Sua comprensione delle basi di Sinatra.
Riepilogo
Ha imparato gli elementi essenziali di Sinatra:
- Sinatra è una DSL web leggera, installata come gem
- Le route associano un verbo HTTP a un percorso e a un blocco
- Il valore restituito dal blocco è il corpo della risposta
- Utilizzi gli helper
status,sete i filtribeforeper controllare il comportamento - Le app modulari creano sottoclassi di
Sinatra::Base
Successivamente, gestirà le route dinamiche e i params.
Domande Frequenti
La lezione «Basi di Sinatra» è gratuita?
Sì — il testo completo di «Basi di Sinatra» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Ruby Academy, passa a CoddyKit PRO. Il corso Ruby Academy include 4 lezioni in totale.
Cosa imparerò in «Basi di Sinatra»?
Applicazioni web leggere Eserciti Ruby Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Ruby Academy?
Non è richiesta alcuna esperienza precedente. Ruby Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Basi di Sinatra»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Ruby Academy?
Sì. Ogni lezione Ruby Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Basi di Sinatra
- Route e parametri
- API JSON
- Middleware e Rack