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

в 22:03, , рубрики: api, json, mysql2, ruby, sinatra, метки: , , , ,

Допустим возникла задача написать простой 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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js