Sinatraを使って、RESTFulなWeb-APIをためしてみた
Ruby AdventCalender 2011の企画であるSinatraを使って、RESTFulなWeb-APIを作ってみたいをもとに色々と学習していきたいと思います。
やること
記事と同様、hash関数に格納した値をsinatraで呼び出します。
それでは早速コードを晒していきます。
実装
hashで格納したデータを定義し、また呼び出すためのメソッドを実装しています。
rest.rb
require 'rubygems' class Precure def initialize @precure = { 1=>{:name=>"tsubomi",:precure=>"blossom"}, 2=>{:name=>"erica",:precure=>"marine"}, 3=>{:name=>"itsuki",:precure=>"sunshine"}, 4=>{:name=>"yuri",:precure=>"moonlight"}, } end def find(id) @precure.fetch(id.to_i,false) end end
hash関数のキーを整数で定義しているので、idはto_iで整数に変換しています。idの値はstring型になっているので、to_iで変換しないといけません(ここで苦労しました)。
呼び出し部分の実装です。
precureをキーにしてデータを参照しています(idはここで渡しています)。@cho_co氏にも協力して頂き、上のコードとともに可読性が向上しております(勉強になりました)
app.rb
require 'rubygems' require 'sinatra' require 'haml' require 'erb' require 'rexml/document' require './rest.rb' get '/' do 'under construction' end get '/user/:id' do |id| precure = Precure.new.find(id) if precure != nil @user_name=precure[:name] @precure_name=precure[:precure] erb :getprecure else "There is no precure" end end
xmlの表示領域を定義します。
getprecure.xml
<?xml version="1.0" encoding="UTF-8"?> <user> <name><%=@user_name%></name> <precure><%=@precure_name%></precure> </user>
まとめ
@cho_co氏には「なんでXMLやねーん」とツッコミを受けているので、JSONで実装したりなんだりしてみたい。
もちろん、PUTやDELETEメソッドの実装もコツコツ取り組んでいければなあとも思っております。