Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Рабочая тетрадь(4)

.pdf
Скачиваний:
36
Добавлен:
10.02.2016
Размер:
7 Мб
Скачать
☆

Игорь Борисов 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-форму

•Попробуйте удалить любую книгу нажав на ссылку Удалить

•Попробуйте изменить данные любой книги нажав на ссылку Изменить

•Если есть ошибки, найдите их и исправьте