- PVSM.RU - https://www.pvsm.ru -

Простой RESTful api сервер на Ruby (Sinatra)

Допустим возникла задача написать простой RESTful api сервер для iOS/Android устройств.

Что дано:
База данных интернет-магазина (базу трогать нельзя)
Инструментарий:
Sinatra [1], mysql2 [2], json [3]

Количество строк: 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

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ruby/24181

Ссылки в тексте:

[1] Sinatra: http://www.sinatrarb.com/

[2] mysql2: https://github.com/brianmario/mysql2

[3] json: https://github.com/flori/json

[4] Источник: http://habrahabr.ru/post/164941/