GrandMasterX / REST_test

app for testing Yii2 REST server and AngularJS(1.xx) frontend

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

REST_test

app for testing Yii2 REST server and AngularJS(1.xx) frontend

Содержание

Установка

Запуск

Cерверная часть

Фронтенд

Установка

ВНИМАНИЕ. приложение создано и протестировано в ОС Linux Ubuntu 16.04 LTS. Конфигурация и установка в других ОС может отличаться. Ниже приводится процесс конфигурации и установки компонентов для ОС Linux Ubuntu/Debian.

Скопируйте все файлы проекта в любую директорию.

В папке:

/backend - находится серверная часть приложения на базе PHP фреймворка Yii2 Basic.

/frontend - клиенская часть приложения на базе AngularJS v1.5.8.

Для простоты работы с приложением, была использована технология Docker и Docker-compose. В папке /docker вы найдете файлы конфигурации для контейнеров docker.
Для запуска приложения необходимо установить эти компоненты, если их нет, согласно руководства к ним и выполнить комaнду в корневой директории проекта:

$ docker-compose up -d

После ее выполнения на локальной машине будет запущен веб-сервер в следующей конфигурации:

PHP7.0 - FPM
NGINX
Postgres

Далее в каталоге /backend выполните миграции базы данных:

$ docker exec -it resttest_php_1 bash
$ cd /var/www/REST_test/backend
$ php yii migrate/up
$ exit

Вы получите готовое к работе приложение с внесенными в БД 6-тью студентами и рандомно установленными предметами для каждого. В файлах миграции можно дополнить/изменить информацию о пользователях.

Запуск

После установки, проект доступен по адресу:

http://localhost:8000

Серверная часть

REST сервер сконфигурирован на базе Yii2 basic. Используя компонент gii были установлен модуль api и два субмодуля v1 и v2. Субмодули сконфигурировані в качестве REST контроллера, используя класс yii\rest\ActiveController с уже настроенными правилами доступа к REST серверу. В контроллерах добавлено поведение \yii\filters\Cors для разрешения Ajax запросов с других серверов.

В контроллер субмодуля V1 добавлен actionGetStudentsCourses для доступа по id студента к его курсам.

В модель ресурсов субмодуля V2 добавлено дополнительное поле lessons для привязки курсов к пользователю сразу при запросе. В результате получили следующую картину.

при запросе GET:

http://localhost:8000/api/v1/users

получаем список всех пользователей с данными согласно таблицы USER.

при запросе GET:

http://localhost:8000/api/v1/users/get-student-courses?id=<user_id> 

получаем список всех курсов привязанных к студенту с конкретными ID.

при запросе GET:

   http://localhost:8000/api/v2/users 

получаем список всех студентов, с уже привязанными к ним курсам, согласно логики указанной в ресурс модели.

Доступ к данным и их добавление и изменение указанные в задании выполняются тоже. Но все я не тестировал. Точно работают: GET: POST: DELETE:

Клиентская часть

Фронтенд приложения построен на базе Angular JS. Сборка проекта осуществляется автоматически, используя Gulp. Необходимые файла конфигурации находятся в корневом каталоге клиентской части (/frontend). За основу использовалась конфигурация Yeoman-generator. Только сильно упрощенная.

Приложение построено с помощью использования стандартных модулей:

ngResource - для доступа и работы с API.

ngRoute - для роутинга и организации MVC приложения.

На страницу ApiV1 выводятся данные полностью согласно заданию.

На страницу ApiV2 выводятся данные согласно ресурс модели бекенда.

Фильтрация и сортировка реализованы на стандартных фильтрах. Пагинация с помощью модуля dir-pagination. Веб страница стилизована с помощью Twitter Bootstrap.

Спасибо за внимание и комментарии.

About

app for testing Yii2 REST server and AngularJS(1.xx) frontend


Languages

Language:CSS 72.5%Language:PHP 21.2%Language:HTML 3.1%Language:JavaScript 2.8%Language:Batchfile 0.4%