Vamos criar um servidor Sinatra simples que responde a / hello-world
Primeiro, crie uma pasta para nosso exemplo:
$ mkdir sinatra-hello-world
$ cd sinatra-hello-world
Em seguida, crie um Gemfile com as joias necessárias:
$ nano Gemfile
source "http://rubygems.org"
gem 'rake'
gem 'sinatra', require: 'sinatra'
Crie um servidor Sinatra, com um url simples / hello-world:
$ nano server.rb
# Requires the Gemfile
require 'bundler' ; Bundler.require
# By default Sinatra will return the string as the response.
get '/hello-world' do
"Hello World!"
end
Inicie o servidor a partir do terminal executando o arquivo server.rb com ruby.
$ ruby server.rb
INFO WEBrick 1.3.1
INFO ruby 1.9.3 (2012-04-20) [x86_64-darwin11.2.0]
== Sinatra/1.4.4 has taken the stage on 4567 for development with backup from WEBrick
INFO WEBrick::HTTPServer#start: pid=3142 port=4567
Por padrão, nosso exemplo Sinatra será executado em http://127.0.0.1:4567 usando WEBbrick como servidor.
A seguir, vamos testar a resposta usando Curl – como esperado, o url / hello-world retorna “Hello World!”
$ curl http://localhost:4567/hello-world
Hello World!%
A seguir, vamos adicionar uma rota que lida com uma solicitação JSON para / hello-world – este exemplo é típico de uma API que pode ser consumida por dispositivos móveis ou aplicativos angular.js .
$ nano server.rb
require 'JSON'
get '/hello-world.json' do
content_type :json # Content-Type: application/json;charset=utf-8
# Use to_json to generate JSON based on the Ruby hash
{greeting: 'Hello World!'}.to_json
end
Reinicie o servidor
Ctrl-C
$ ruby server.rb
Use Curl para testar o novo URL json (o parâmetro -v mostra cabeçalhos HTTP e resposta)
$ curl -v http://localhost:4567/hello-world.json
> GET /hello-world.json HTTP/1.1
>
< HTTP/1.1 200 OK
< Content-Type: application/json;charset=utf-8
{"greeting":"Hello World!"}%
Leia mais sobre Sinatra