Рабочая тетрадь(4)
.pdf
Игорь Борисов http://igor-borisov.ru
Введение в REST
Фреймворк Slim
Библиотека NotORM
Базовые операции сервера
Базовые операции клиента
Representational State Transfe
Передача состояния представления
Стиль построения архитектуры распределенного приложения
Данные должны передаваться в виде небольшого количества стандартных форматов (например
HTML, XML, JSON)
Сетевой протокол должен поддерживать кэширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами «запрос-ответ»
http://www.slimframework.com/
Автозагрузчик
\Slim\Slim::registerAutoloader();
Создание экземпляра класса
$app = new \Slim\Slim();
Запуск приложения
$app -> run();
$app->get('/', function(){ echo 'Привет, гость!';
});
$app->post('/:id', function($id) use ($app){ $name = $app->request()->post('name'); $params = $app->request()->post();
$res = $app->response(); $res['Content-Type'] = 'text/xml';
});
http://www.notorm.com
Инициализация
$pdo = new PDO('sqlite:db');
$db = new NotORM($pdo);
Выборка всех записей
foreach($db->users() as $user)
Выборка с условием
$user = $db->users()->where('id', $id);
$row = $user->fetch();
Изменение записи
$user->update($array);
Вставка записи
$db->users()->insert($array);
Лабораторная работа 6
Создание и использование REST-сервиса
Упражнение 1: Создание REST-сервиса
•Перенесите папки и файлы из предыдущей лабораторной работы (.htaccess, index.php, application и data) обратно в папку mvc
•В текстовом редакторе откройте файл rest\index.php
•Под комментарием /* Подключение библиотек */ подключите файлы Slim/Slim.php
и NotORM.php
•Под комментарием /* Инициализация автозагрузчика */ инициализируйте автозагрузчик фреймворка Slim
•Под комментарием /* Инициализация соединения с БД для NotORM */
инициализируйте PDO-соединение с БД rest.db
•Создайте объект $db - экземпляр класса NotORM, передав в его конструктор в качестве аргумента созданный экземпляр класса PDO
•Под комментарием /* Создание экземпляра класса Slim */ создайте объект $app - экземпляр класса Slim
•Под комментарием /* Выборка всех книг */ опишите замыкание как:
$books = array();
foreach ($db->books() as $book) { $books[] = array(
"id" => $book["id"], "title" => $book["title"],
"author" => $book["author"], "summary" => $book["summary"]
);
}
$res = $app->response(); $res["Content-Type"] = "application/json"; echo json_encode($books);
•Под комментарием /* Получение книги используя её идентификатор */ опишите замыкание как:
$res = $app->response(); $res["Content-Type"] = "application/json"; $book = $db->books()->where("id", $id); if ($data = $book->fetch()) {
echo json_encode(array(
"id" => $data["id"], "title" => $data["title"],
"author" => $data["author"],
"summary" => $data["summary"] ));
}else{
echo json_encode(array( "status" => 1,
"message" => "Book ID $id does not exist" ));
}
•Под комментарием /* Добавление новой книги */ опишите замыкание как:
$res = $app->response(); $res["Content-Type"] = "application/json"; $book = $app->request()->post();
$result = $db->books->insert($book);
echo json_encode(array("id" => $result["id"]));
•Под комментарием /* Изменение данных книги используя её идентификатор */
опишите замыкание как: $res = $app->response();
$res["Content-Type"] = "application/json"; $book = $db->books()->where("id", $id); if ($book->fetch()) {
$post = $app->request()->put();
$result = $book->update($post); echo json_encode(array(
"status" => 1,
"message" => "Book updated successfully" ));
}else{
echo json_encode(array( "status" => 0,
"message" => "Book id $id does not exist"
));
}
•Под комментарием /* Удаление книги используя её идентификатор */ опишите замыкание как:
$res = $app->response(); $res["Content-Type"] = "application/json"; $book = $db->books()->where("id", $id); if ($book->fetch()) {
$result = $book->delete(); echo json_encode(array(
"status" => 1,
"message" => "Book deleted successfully"
));
}else{
echo json_encode(array( "status" => 0,
"message" => "Book id $id does not exist"
));
}
•Под комментарием /* Запуск приложения */ запустите сервис
•Сохраните файл rest\index.php
Упражнение 2: Использование REST-сервиса
•Скопируйте файл C:\Users\Public\OpenServer\domains\mysite.local\rest.php в директорию C:\Users\Public\OpenServer\domains\localhost\
•Запустите браузер
•В адресной строке наберите http://localhost/rest.php. Вы должны увидеть список книг
•Добавьте новую книгу через HTML-форму
•Попробуйте удалить любую книгу нажав на ссылку Удалить
•Попробуйте изменить данные любой книги нажав на ссылку Изменить
•Если есть ошибки, найдите их и исправьте
