====== REST API on python ====== REST API написанная на языке python. Основная задача - регламентировать взаимодействие всех систем с базой данных. Так же увеличивает защиту данных и разграничивает доступ. Написана с использованием двух основных микро-фреймворков (библиотек): [[https://docs.sqlalchemy.org/en/14/ | SQLAlchemy]] и [[https://flask.palletsprojects.com/en/2.2.x/ | Flask]]. Тестовая версия с основным функционалом по [[https://git.sharix-app.org/ShariX_Open/open-RESTful-API/src/master | ссылке]]. ---- ===== Инструкция по установке и запуску на ПК ===== - Загрузите репозиторий к себе на компьютер. Убедитесь что путь к папке не содержит пробелов (это особенность python). - Запустите файл **install.bat**. Он загрузит ещё один репозиторий необходимый для работы АПИ, а так же установит виртуальную среду и все необходимые зависимости. Если возникнут проблемы с этим этапом. Откройте файл **install.bat** в любом текстовом редакторе и выполните необходимые команды вручную. Зависимости находятся в файле **requirements.txt**. В дальнейшем все необходимые зависимости так же стоит записывать в этот файл, а поможет вам команда ''pip freeze > requirements.txt''. - Далее необходимо открыть файлы **config.py** и **connect.py**. Измените эти файлы в соответствии с вашим подключением к базе данных. - Запустите файл **run_api.bat**. Появится терминал информирующий вас о том что АПИ поднята и готова к работе. А так же отобразиться сервер к которому необходимо обращаться. Протестировать функциональность можно воспользовавшись программой [[https://www.postman.com/ | Postman]] ---- ===== Инструкция по установке на сервер ===== Для начала убедитесь что на вашем сервере установлены следующие компоненты: apache2 и mod_wsgi. * Загрузите репозиторий из ветки **[[https://git.sharix-app.org/ShariX_Open/open-RESTful-API/src/server_rest_api|server_rest_api]]** по следующему пути /var/www/__dirname__/ * Рядом с папкой которая появилась в результате клонирования репозитория необходимо создать wsgi файл со следующим содержанием: * Отредактируйте файлы **config.py** и **connect.py** в соответствии с вашим подключением к базе данных. * Создайте файл конфигурации по следующему пути: /etc/httpd2/conf/sites-available/__dirname__.conf (путь может отличаться в зависимости от сервера. Файл должен иметь следующее содержания: {{:virtualhostconf.png?nolink&400|}} * Измените файл в соответствии с вашим сервером, хостом и прочим. * Воспользуйтесь командой ''sudo a2ensite __dirname__'' для активации конфигурации (может отличаться) . * Далее перезапустите apache2 командой ''sudo service httpd2 restart'' (может отличаться) ---- ==== Немного о структуре и коде ==== * В файле **Models.py** расположены модели баз данных. Они построены с помощью микро-фреймворка SQLAlchemy. Они значительно упрощают работу с данными, взаимодействие с базой данных, а так же облегчают преобразование данных в json-формат. * В файле **SharixQuery.py** расположены запросы к базе данных. Запросы так же реализованы с помощью SQLAlchemy. Ссылка на документацию приведена в самом начале файла. * В файлах **connect.py** и **config.py** происходит подключение к базе данных. * В файле **api_config.py** расположен ключ для шифрования данных в АПИ. * В файле **api.py** расположен основной код. Строчка ''@app.route("/path/api/", methods=['GET'])'' создает обработчик запросов. Далее метод. И строчка ''return jsonify(data), 200'' где **data** - это тело запроса, а число - это код ответа сервера. Более подробную информацию можно найти в документации ссылка на которую расположена в начале статьи.