{"id":26412958,"url":"https://github.com/excellent-84/currency_exchange","last_synced_at":"2026-04-19T04:31:13.501Z","repository":{"id":228842541,"uuid":"774988081","full_name":"Excellent-84/currency_exchange","owner":"Excellent-84","description":"Асинхронное API для получения курса валют и их конвертации в режиме реального времени                              ","archived":false,"fork":false,"pushed_at":"2024-03-20T18:15:17.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T22:12:37.799Z","etag":null,"topics":["aiohttp","alembic","fastapi","jwt-token","postgresql","pydantic","pytest","python","sqlalchemy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Excellent-84.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-20T15:04:50.000Z","updated_at":"2024-03-20T18:40:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"5420109e-5fbe-405a-a36a-7a563516f2bf","html_url":"https://github.com/Excellent-84/currency_exchange","commit_stats":null,"previous_names":["excellent-84/currency_exchange"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Excellent-84/currency_exchange","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Excellent-84%2Fcurrency_exchange","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Excellent-84%2Fcurrency_exchange/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Excellent-84%2Fcurrency_exchange/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Excellent-84%2Fcurrency_exchange/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Excellent-84","download_url":"https://codeload.github.com/Excellent-84/currency_exchange/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Excellent-84%2Fcurrency_exchange/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31994886,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"online","status_checked_at":"2026-04-19T02:00:07.110Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aiohttp","alembic","fastapi","jwt-token","postgresql","pydantic","pytest","python","sqlalchemy"],"created_at":"2025-03-17T22:10:18.817Z","updated_at":"2026-04-19T04:31:13.495Z","avatar_url":"https://github.com/Excellent-84.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Проект «API обмена валют»\n\n### Описание проекта:\n\nАсинхронный програмный интерфейс, по средствам которого пользователи могут\nполучать последние курсы обмена различных валют и выполнять их конвертацию.\nПроект включает аутентификацию с помощью JWT-токена для доступа пользователей\nи интеграцию с открытым API для получения данных об обменных курсах в режиме\nреального времени.\n\n### Стек технологий:\n\u003cimg src=\"https://img.shields.io/badge/Python-FFFFFF?style=for-the-badge\u0026logo=python\u0026logoColor=3776AB\"/\u003e\u003cimg src=\"https://img.shields.io/badge/FastAPI-FFFFFF?style=for-the-badge\u0026logo=fastapi\u0026logoColor=009688\"/\u003e\u003cimg src=\"https://img.shields.io/badge/pydantic-FFFFFF?style=for-the-badge\u0026logo=pydantic\u0026logoColor=E92063\"/\u003e\u003cimg src=\"https://img.shields.io/badge/aiohttp-FFFFFF?style=for-the-badge\u0026logo=aiohttp\u0026logoColor=2C5BB4\"/\u003e\u003cimg src=\"https://img.shields.io/badge/PostgreSQL-FFFFFF?style=for-the-badge\u0026logo=PostgreSQL\u0026logoColor=4169E1\"/\u003e\u003cimg src=\"https://img.shields.io/badge/sqlalchemy-FFFFFF?style=for-the-badge\u0026logo=sqlalchemy\u0026logoColor=D71F00\"/\u003e\u003cimg src=\"https://img.shields.io/badge/alembic-FFFFFF?style=for-the-badge\u0026logo=alembic\u0026logoColor=8212\"/\u003e\u003cimg src=\"https://img.shields.io/badge/JWT-FFFFFF?style=for-the-badge\u0026logo=JSON%20web%20tokens\u0026logoColor=black\"/\u003e\u003cimg src=\"https://img.shields.io/badge/pytest-FFFFFF?style=for-the-badge\u0026logo=pytest\u0026logoColor=0A9EDC\"/\u003e\n\n### Как запустить проект:\n\n##### Клонировать репозиторий и перейти в него в командной строке:\n\n```\ngit clone https://github.com/Excellent-84/currency_exchange.git\ncd currency_exchange\n```\n\n##### Cоздать и активировать виртуальное окружение:\n\n```\npython3 -m venv venv\nsource venv/bin/activate\npython3 -m pip install --upgrade pip\n```\n\n##### Установить зависимости из файла requirements.txt:\n\n```\npip install -r requirements.txt\n```\n\n##### Создать файл .env и указать необходимые токены по примеру .env.example:\n```\ntouch .env\n```\n\n##### При необходимости выполнить и применить миграции:\n\n```\nalembic revision --autogenerate -m \"\u003cваш комментарий\u003e\"\nalembic upgrade head\n```\n\n##### Запустить проект:\n\n```\npython main.py\n```\n\n##### Тестирование. Перед запуском тестирования в файле .test.env необходимо указать тестовые данные, отличные от файла .env:\n\n```\npytest\n```\n\n### Примеры запросов к API с помощью Postman:\n\n##### Регистрация пользователя в базе данных:\n\nВо вкладке Body выбрать x-www-form-urlencoded.\nВ поле key указать username и password.\nВ поле value указать их значение.\n\nМетод POST к эндпоинту   http://127.0.0.1:8000/auth/register\n\nПример ответа:\n\n```\n{\n    \"username\": \"John Doe\",\n    \"id\": 15,\n    \"hashed_password\": \"$2b$12$BUQluFx5OoTnH34TKuS1OuOPDrTj7DcdnjZrBhdm83Y/PtOe5TYJ.\"\n}\n```\n\n##### Аутентификация пользователя:\n\nОставить те же поля и их значения, которые указывали при регистрации.\nСрок действия токена 30 минут, после чего необходимо пройти повторную аутентификацию\n\n\nМетод POST к эндпоинту   http://127.0.0.1:8000/auth/login\n\nПример ответа:\n\n```\n{\n    \"access_token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJKYW5lIEFpciIsImV4cCI6MTcxMDk0MTkwOH0.rETSvS9FU5qpOmp6QURw_TLxNnYa7JDBSEaOGC2EdUk\",\n    \"token_type\": \"Bearer\"\n}\n```\n\n##### Получение списка доступных валют:\n\nВо вкладке Auth в поле Type выбрать Bearer Token.\nВ поле Token скопировать значение access_token, полученного при аутентификации.\n\nМетод GET к эндпоинту   http://127.0.0.1:8000/currency/list\n\nПример ответа:\n\n```\n{\n    \"AED\": \"United Arab Emirates Dirham\",\n    \"AFN\": \"Afghan Afghani\",\n    \"ALL\": \"Albanian Lek\",\n    ...\n}\n```\n\n##### Получение курса пары доступных валют:\n\nВо вкладке Auth в поле Type выбрать Bearer Token.\nВ поле Token скопировать значение access_token, полученного при аутентификации.\nВо вкладке Params в поле key указать cur_1 и cur_2.\nВ поле value указать их значение по ключу из списка доступных валют.\nНапример пара RUB и USD.\n\nМетод GET к эндпоинту   http://127.0.0.1:8000/currency/rate\n\nПример ответа:\n\n```\n{\n    \"success\": true,\n    \"timestamp\": 1710943326,\n    \"base\": \"USD\",\n    \"date\": \"2024-03-20\",\n    \"rates\": {\n        \"RUB\": 92.249758\n    }\n}\n```\n\n##### Конвертация пары доступных валют:\n\nВо вкладке Auth в поле Type выбрать Bearer Token.\nВ поле Token скопировать значение access_token, полученного при аутентификации.\nВо вкладке Params в поле key указать cur_1, cur_2, а также amount.\nВ поле value указать их значение по ключу из списка доступных валют.\nЗначение для ключа amount указать любое положительное число.\nНапример пара RUB и BTC, колчество 0.5.\n\nМетод GET к эндпоинту   http://127.0.0.1:8000/currency/exchange\n\nПример ответа:\n\n```\n{\n    \"success\": true,\n    \"query\": {\n        \"from\": \"BTC\",\n        \"to\": \"RUB\",\n        \"amount\": 0.5\n    },\n    \"info\": {\n        \"timestamp\": 1710944165,\n        \"rate\": 5898969.225331\n    },\n    \"date\": \"2024-03-20\",\n    \"result\": 2949484.612666\n}\n```\n\n##### Подробную версию запросов можно посмотреть по адресу:\n##### http://127.0.0.1:8000/docs/ или http://127.0.0.1:8000/redoc/\n\n#### Автор: [Горин Евгений](https://github.com/Excellent-84)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexcellent-84%2Fcurrency_exchange","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexcellent-84%2Fcurrency_exchange","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexcellent-84%2Fcurrency_exchange/lists"}