Git Product home page Git Product logo

test2_rest_api's Introduction

Тестовое задание - каталог товаров с REST API

Использован шаблон YII2 Basic по минимуму в рамках тестового задания. По условию тестового задания разработано REST API. Спецификация и сгенерированная документация по API лежит в папке /api/

Авторизация к API реализована по алгоритму HTTP Basic access authentication. Просматривать товары можно без авторизации.

Протестировано на виртуальной машине с Apache 2 + PHP 7.4 + MariaDB 10.4

Установка

Скачиваем проект в папку: git clone https://github.com/gsomgsom/test2_rest_api.git .

В папке выполняем: composer i

В конфигурации веб сервера указываем путь к папке /web/ внутри проекта и файлу index.php

Создаём базу данных: reezonly_api

Настраиваем доступ к БД в файлах: /config/db.php

Запускаем миграцию из корневой папки: php yii migrate

Установка завершена.

Настройка тестов

Создаём базу данных: reezonly_api_test

Настраиваем доступ к БД в файлах: /config/test-db.php

Запускаем миграцию из корневой папки: php tests/bin/yii migrate

Установить модуль REST: composer req --dev codeception/module-rest

Для сборки: php vendor/bin/codecept build

Установка завершена.

screenshot

Полноценно пощупать API можно через Postman (например, проверить поиск). screenshot

Запуск тестов

Реализованы базовые тесты REST API и Unit-тесты к модели Item

Для запуска: php vendor/bin/codecept run

screenshot

Дополнительно

В папке /view-app/ расположены исходники фронт-части проекта на Vue.JS с инструкциями для пересборки. Для работы проекта этого делать не обязательно. Всё уже собрано.

Текст тестового задания

Разработать простое веб-приложение "Каталог товаров" через REST API, с использованием фреймворка Yii2. Приложение должно позволять просматривать список товаров, добавлять новые товары и редактировать существующие. Для каждого товара должны быть доступны следующие данные:

  • Название товара
  • Описание товара
  • Цена товара

Дополнительные требования:

  1. Приложение должно быть разделено на отдельные модули (каталог товаров, административная панель и т.д.).
  2. Каталог товаров должен отображать список всех товаров с возможностью сортировки и поиска по названию.
  3. При добавлении и редактировании товара должна быть валидация данных (название обязательно, цена - числовое значение больше нуля).
  4. Административная панель должна быть доступна только авторизованным пользователям.
  5. В приложении должны быть методы, позволяющие в дальнейшем написать юнит тесты для проверки основных функций (например, добавление и редактирование товара). Сами тесты писать не нужно.
  6. Код должен быть хорошо организован, читаем и соблюдать принципы SOLID.
  7. Необходимо использовать git для контроля версий.

Примечания по выполненному тестовому заданию

Приложение разделено на два модуля - фронт часть, обращающаяся к REST API в модуле admin и бэк часть, непосредственно сам REST API в модуле api. Бэк часть реализована полностью по ТЗ (с авторизацией, разделением прав и поиском). Фронт часть написана как SPA на VueJS 3, использует бэк часть и авторизуется по HTTP Basic access authentication для работы с данными.

test2_rest_api's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.