Допустим возникла задача написать простой RESTful api сервер для iOS/Android устройств.
Что дано:
База данных интернет-магазина (базу трогать нельзя)
Инструментарий:
Sinatra, mysql2, json
Количество строк: 47
Время: ~ 5 мин
# Simple api server
require 'rubygems'
require 'sinatra'
require 'mysql2'
require 'json'
db = Mysql2::Client.new(
:host => 'localhost',
:username => 'root',
:password => 'root',
:database => 'example',
:encoding => 'utf8'
)
before do
content_type 'application/json'
end
# главная страница
get '/' do
{ :app => 'simple api server', :version => 'v.01',
:date => Time.new
}.to_json
end
# вернет список категорий
get '/categories' do
db.query("SELECT * FROM `s_categories`", :as => :json)
end
# вернет список товаров из категории
get '/categories/:id' do
db.query("SELECT * FROM `s_products`
LEFT JOIN `s_products_categories` ON `s_products`.`id` = `s_products_categories`.`product_id`
LEFT JOIN `s_categories` ON `s_products_categories`.`category_id` = `s_categories`.`id`
WHERE `s_categories`.`id` = #{params[:id]} LIMIT 10", :as => :json)
end
# вернет список товаров
get '/products' do
db.query("SELECT * FROM `s_products` LIMIT 10", :as => :json)
end
# вернет товар
get '/products/:id' do
db.query("SELECT * FROM `s_products` WHERE id = #{params[:id]}", :as => :json)
end
С рождеством :-)
Автор: bromel