LoginSignup
12
11

More than 5 years have passed since last update.

Rubyインストールから始める、「sinatra」でWebAPIを作る

Posted at

概要

Rubyのフレームワークで簡単に軽いアプリケーションを作ることができる「sinatra」君で今回はWebAPIを作ろう!

Rubyのインストールから始めるsinatra
1.Rubyをインストール
2.Sinatraをインストール
3.Sinatraで文字を表示する
4.URLで取得したパラメータを使う

1.Rubyのインストール

 私はwinマシーンなので http://rubyinstaller.org/ からインストールできるパッケージを実行しインストール。簡単。

# 2.Sinatoraをインストール
Windowsマシーンなのでコマンドプロンプトを起動。

ruby -v

を打ってrubyのバージョンが出ればとりあえずオッケー。

さぁsinatraをインストールしていきましょう。

gem install sinatra
gem install sinatra-reloader

長いですが頑張って待ちましょう。

エディタ

エディタは別になんでもいいですが僕はandroid以外はsublimeですべて解決させています。

3.Sinatraで文字を表示する

早速リクエストしちゃいましょう。

helloWorld.rb
require "sinatra"

get '/' do 
    "Hello World!"
end

まず上をしゃきょって(写経しちゃって)ください。

require ' sinatra'

は単純にsinatra読みこんでね、といった具合

そして次に

get '/' do 
    "Hello World!"
end

「''」で囲まれた部分がリクエストされた場合↓をを返してね、といった具合です。
今回の場合だと「/]がリクエストされた場合["helloWorld"」を返してね、といった具合です。

sinatraは基本的に「ほにゃららされたらほにゃららする」が基本形です。
それをどんどん追加していくことで機能を実装していきます。

実行しよう

ruby helloWolrd.rb

を実行するとローカルにwebサーバーが立ち上がります。
確認方法は http://localhost:4567
です。今回はリクエストパラメータに / を指定しているのでhttp://localhost:4567/ でhttpリクエストしましょう!

sinatra/reloader

先ほどsinatraと一緒にダウンロードしたsnatra/reloaderの話をします。
sinatra/reloaderなんですが逆にない場合の話をします。
導入しない場合ソースを変更した際にいちいちサーバーをいちいち立て直さないと変更が適用されません。
例えば先ほどのコードに微修正をそのまましてみてください。(終了の仕方は ctr c です。)

require "sinatra"

get '/' do 
    "Hello World!"
end

get '/sasaki' do
    "sasaki is good"
end

先ほどのにそのまま追加してみてもらえばいいんですがもしリアルタイムで反映されるとしたら http://localhost:4567/sasaki で 「sasaki is good」と表示されるべきなんですがエラーぽい画面が出るかと思います。

そんな時に上部のrequireに さらに追加することでリアルタイムに反映させることができます。

試しに一度やってみましょう(もう一度 ctr cでサーバーを落とし、)

require "sinatra"
require "sinatra/reloader"

get '/' do 
    "Hello World!"
end

get '/sasaki' do
    "sasaki is good"
end

でサーバーを起動。
一旦 http://localhost:4567/sasaki でリクエスト。
おそらく 「sasaki is good」が表示されます。
エディタに戻って変更してみます。なんでもいいんですが、

require "sinatra"
require "sinatra/reloader"

get '/' do 
    "Hello World!"
end

get '/sasaki' do
    "sasaki is gooddess"
end

などにしてサーバーを再起動せずに保存だけしてみましょう。
おそらく僕が瞬く間にいい人から女神に早変わりしたでしょう。

URLで取得したパラメータを使う

get '/hello/:name' do
    "hello #{parmas[:name]}"
end

[:]以降は変数となり#{parmas[]}の中身の物が表示されることになります。
例えば今回 http://localhost:4567/hello/sasaki のパラメータを渡した場合
hello sasaki といったようにページに表示されます。
また、これはかなり省略することができます。

get '/hello/:name' do |a|
    "hello #{a}"
end

といった具合です。

ワイルドカードを用いて二つ以上のパラメータを渡す場合

get '/from/*/to/*' do |f,l|
    "from #{f} to #{l}"
end

http://localhost:4567/from/Y/to/Y
といった形で渡してあげましょう。

数字のみ渡したい場合正規表現を用いて、
rb
get %r{/users/([0-9]*)} do |i|
"users Id = #{i}"
end

このような感じでしょうか。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11