[Содержание]
Система RESTful API на основе Tornado; рекомендованная версия Tornado — 6.0.1
Старое | Новое | Описание |
---|---|---|
master | основной | главный |
slave | зависимый | отдельный |
blacklist | denylist | список запрещённых |
whitelist | allowlist | список разрешённых |
Ответ API, выбросьте JsonError
там, где это необходимо
from trest.exception import JsonError
raise JsonError('сообщение')
raise JsonError('сообщение', 0)
raise JsonError('сообщение', 1, [])
raise JsonError('сообщение', 1, [1, 2, 3])
```# Зависимости окружения
* Я использую Python 3.7.2 + MySQL 5.7 на MacBook Pro, должно работать на всех операционных системах (MySQL 5.6.2 и выше)
* Поддержка Python ниже 3.6 больше не планируется, код будет обновлен вместе с Tornado или Python
* ORM-фреймворк для работы с базами данных — SQLAlchemy (SQLAlchemy поддерживает SQLite, PostgreSQL, MySQL, Oracle, MS SQL, Firebird, Sybase и другие), если требуется использовать другую базу данных, потребуется небольшая настройка
* Используйте pipenv https://github.com/pypa/pipenv/blob/main/docs/advanced.rst# Запуск проекта
Обратите внимание: При запуске Docker-окружения нет необходимости создавать .env файл для производства
## Запуск Docker-окружения
git clone https://gitee.com/leeyi/py_admin.git py_admin && cd py_admin // Удаление контейнеров Docker docker rm -f pya_db_main pya_db_subordinate pya_up_db pya_redis pya_py_admin
docker-compose -f docker-local.yml up
// Запустить в фоновом режиме docker-compose -f docker-local.yml up -d
// Выполнить команду внутри работающего контейнера docker exec -it pya_py_admin bash
// Получить логи работающего контейнера docker logs -f -t pya_py_admin
## Запуск проекта без Docker
git clone https://gitee.com/leeyi/py_admin.git py_admin && cd py_admin
pipenv install --skip-lock --pypi-mirror=http://mirrors.aliyun.com/pypi/simple/ // или pipenv install --dev --skip-lock
Настройка локальных переменных окружения для разработки, затем запуск:
```bash
cp configs/dev.yaml configs/product.yaml
echo '# RUNTIME_ENV не является одним из значений local, dev, test или product
# двоеточие должно иметь пробелы вокруг него
RUNTIME_ENV : product' > .env
# Включение виртуального окружения
pipenv shell
# Запуск проекта
python server.py --port=5080
# Выход из pipenv
exit
Установка зависимостей с помощью pipenv:
pipenv install -e git+https://gitee.com/leeyi/trest.git@main#egg=trest
Метод использования одного общего виртуального окружения для нескольких проектов, чтобы сэкономить место на диске:
После выполнения команды pipenv install
в первом проекте выполните следующие команды:
mv .venv /root/.local/share/venv_py_admin
ln -s /root/.local/share/venv_py_admin .venv
```Для других проектов достаточно создать символьную ссылку.
### База данных
См. директорию `datas/sql`.
#### Другое
```sql
show processlist;
set global validate_password_policy = 0;
-- For MySQL 8
set global validate_password.policy = 0;
create database db_py_admin default character set utf8 collate utf8_general_ci;
CREATE USER user_py_admin identified by 'eb27acWq#16E1';
GRANT ALL PRIVILEGES ON db_py_admin.* TO 'user_py_admin'@'%';
flush privileges;
-- Export only the table structure
mysqldump --opt -d db_py_admin -u root -p > datas/db.sql
aes::: + ciphertext
applications/admin/menu.py
, docstringПодробное описание находится в разделе Архитектурное описание TRest проекта.
git clone ...
cd py_admin
tree -I '*svn|*node_module*|*git|py3|*.pyc|__pycache__|statics'
```### Генерация публичных и приватных ключей с помощью OpenSSL
```bash
# Создание приватного ключа RSA
openssl genrsa -out dev_privkey.pem 1024
# Получение публичного ключа из приватного ключа
openssl rsa -pubout -in dev_privkey.pem -out dev_pubkey.pem
Запрос данных выполняется с помощью GET. Добавление/редактирование данных выполняется с помощью POST. Удаление данных выполняется с помощью DELETE.Также требуется реализовать функционал для выдачи наград и возможность загрузки аватаров пользователями.
from applications.core.utils.encrypter import RSAEncrypter
from applications.vsn1.services import ApiVsnService
(code_, msg_, pubkeyser) = ApiVsnService.pubkeyser('1.0.0')
plaintext = 'Ly123456'
ciphertext = RSAEncrypter.encrypt(plaintext, pubkeyser)
print('ciphertext', ciphertext)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )