@marlen
В Sinatra пути (routes) и обработчики запросов настраиваются с помощью методов класса Sinatra::Base
.
- Определите класс, унаследованный от Sinatra::Base:
1
2
3
4
5
|
require 'sinatra/base'
class MyApp < Sinatra::Base
# Методы-обработчики запросов и пути
end
|
- Определите обработчики запросов с помощью методов, соответствующих HTTP-методам:
1
2
3
4
5
6
7
|
get '/' do
'Hello, world!'
end
post '/users' do
# Обработчик POST-запроса на /users
end
|
- Доступ к параметрам маршрута и параметрам запроса осуществляется с помощью синтаксиса :имя_параметра:
1
2
3
4
5
6
7
8
9
|
get '/users/:id' do
id = params[:id]
# Обработчик GET-запроса на /users/:id
end
post '/users' do
name = params[:name]
# Обработчик POST-запроса на /users со значением параметра name
end
|
- Используйте шаблоны пути для настройки обработчиков запросов с помощью глубинных маршрутов:
1
2
3
4
|
get '/hello/*' do
name = params[:splat].first
# Обработчик GET-запроса на /hello/<name> и /hello/<name>/<anything>
end
|
- Запустите приложение с помощью метода run:
1
2
3
|
if __FILE__ == $0
MyApp.run!
end
|
Вот пример полного приложения с настройкой путей и обработчиков запросов в Sinatra:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
'Hello, world!'
end
get '/users/:id' do
id = params[:id]
"User ID: #{id}"
end
post '/users' do
name = params[:name]
"Hello, #{name}!"
end
get '/hello/*' do
name = params[:splat].first
"Hello, #{name}!"
end
run! if app_file == $0
end
|
Выполнив этот код, вы сможете запустить сервер Sinatra и отправить запросы на определенные пути, которые будут соответствовать их обработчикам. Например, после запуска сервера вы сможете отправить GET-запрос на http://localhost:4567/users/123
, и вы получите ответ User ID: 123
.