Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vladislavyar/grocery_store_sarafan

Backend проекта "магазин продуктов".
https://github.com/vladislavyar/grocery_store_sarafan

django django-rest-framework docker postgresql python

Last synced: 6 days ago
JSON representation

Backend проекта "магазин продуктов".

Awesome Lists containing this project

README

        


grocery_store_sarafan



Описание


Backend проекта "магазин продуктов".


Эндпоинты


Получение категорий



```JSON
method: GET
Authorization: No Auth
URL: http://domaine:port/api/v1/categories/
Status: 200 OK
Response:
{
"count": 1,
"next": "http://domaine:port/api/v1/categories/?page={int}",
"previous": "http://domaine:port/api/v1/categories/?page={int}",
"results": [
{
"title": "str",
"slug": "str",
"image": "http://domaine:port/media/images/{str}.png",
"subcategories": [
{
"title": "str",
"slug": "str",
"image": "http://domaine:port/media/images/{str}.png"
}
]
}
]
}
```

Получение продуктов

```JSON
method: GET
Authorization: No Auth
URL: http://domaine:port/api/v1/products/
Status: 200 OK
Response:
{
"count": 1,
"next": "http://domaine:port/api/v1/products/?page={int}",
"previous": "http://domaine:port/api/v1/products/?page={int}",
"results": [
{
"title": "str",
"slug": "str",
"image": [
"http://domaine:port/media/images/{str}.png",
"http://domaine:port/media/images/{str}.png",
"http://domaine:port/media/images/{str}.png"
],
"price": 1,
"category": "str",
"subcategory": "str"
}
]
}
```

Регистрация пользователя



```JSON
method: POST
Authorization: No Auth
URL: http://domaine:port/api/v1/auth/users/
Status: 201 Created
Request:
{
"username": "str",
"password": "str"
}
Response:
{
"email": "str",
"username": "str",
"id": 1
}
```

Получение токена

```JSON
method: POST
Authorization: No Auth
URL: http://domaine:port/api/v1/auth/jwt/create/
Status: 200 OK
Request:
{
"username": "str",
"password": "str"
}
Response:
{
"refresh": "str",
"access": "str"
}
```

Добавление/изменение/удаление товара из корзины



```JSON
method: POST
Authorization: Bearer Token
URL: http://domaine:port/api/v1/basket/
Status: 201 Create
Request:
{
"product": "str",
"count": 1
}
Response:
{
"product": {
"title": "str",
"slug": "str",
"image": [
"http://domaine:port/media/images/{str}.png",
"http://domaine:port/media/images/{str}.png",
"http://domaine:port/media/images/{str}.png"
],
"price": 1,
"category": "str",
"subcategory": "str"
},
"count": 1,
"total_price_product": 1
}
```
```JSON
method: PUT, PATCH
Authorization: Bearer Token
URL: http://domaine:port/api/v1/basket/
Status: 200 OK
Request:
{
"product": "str",
"count": 1
}
Response:
{
"product": {
"title": "str",
"slug": "str",
"image": [
"http://domaine:port/media/images/{str}.png",
"http://domaine:port/media/images/{str}.png",
"http://domaine:port/media/images/{str}.png"
],
"price": 1,
"category": "str",
"subcategory": "str"
},
"count": 1,
"total_price_product": 1
}
```
```JSON
method: DELETE
Authorization: Bearer Token
URL: http://domaine:port/api/v1/basket/
Status: 204 No Content
Request:
{
"product": "str",
"count": 1
}
```

Получение информации по корзине



```JSON
method: GET
Authorization: Bearer Token
URL: http://domaine:port/api/v1/basket/info/
Status: 200 OK
Response:
{
"products": [
{
"product": {
"title": "str",
"slug": "str",
"image": [
"http://domaine:port/media/images/{str}.png",
"http://domaine:port/media/images/{str}.png",
"http://domaine:port/media/images/{str}.png"
],
"price": 1,
"category": "str",
"subcategory": "str"
},
"count": 1,
"total_price_product": 1
}
],
"total_count": 1011,
"total_price_products": 6066
}
```

Очистка корзины



```JSON
method: DELETE
Authorization: Bearer Token
URL: http://domaine:port/api/v1/basket/clean/
Status: 204 No Content
```


Как запустить

Через Docker



  • 1. Создать и заполнить файл .env в папке
    infra по шаблону
    .env.example.


  • 2. Если имеется утилита Make, в корне проекта выполнить команду make project-init,


    иначе


    выполнить команду docker compose -f ./infra/docker-compose.yml --env-file ./infra/.env up -d.


    Docker соберёт контейнеры с postgreSQL, приложением, выполнит миграцию,


    заполнит БД тестовыми категориями, подкатегориями и продуктами, создаст superuser-a.


    После сервер будет доступен по адрессу: http://127.0.0.1:8000/.




  • Примечание


    3. В контейнер с приложением проброшен volume с кодом, изменение кода в проекте обновляет его в контейнере и перезапускает сервер.




  • 4. Последующие запуски проекта осуществляются через команду make project-start


    или


    docker compose -f ./infra/docker-compose-start.yml --env-file ./infra/.env up -d



Через консоль



  • 1. Создать и заполнить файл .env в папке
    infra по шаблону
    .env.example.


  • 2. Создать БД в postgreSQL.




  • 3. Перейти в корень проекта и создать виртуальное окружение python -m venv venv.




  • 4. Активировать виртуальное окружение source venv/Scripts/activate.




  • 5. Установить зависимости pip install -r requirements.txt.




  • 6. Выполнить миграцию БД python src/manage.py migrate.




  • 7. Создать superuser-a python src/manage.py createsuperuser --noinput.





  • 8. Заполнить БД тестовыми данными(категории, подкатегории, продукты) python src/manage.py test_data.





  • 9. Запустить сервер python src/manage.py runserver.





  • 10. Сервер будет доступен по адрессу: http://127.0.0.1:8000/.




Стек