Você deverá criar um projeto Django que utilize a biblioteca Django Rest Framework para servir um Web Service. Você pode adicionar outras bibliotecas se achar necessário, mas o desenvolvimento das funcionalidades principais deve ser seu próprio.
Este projeto deve controlar o catálogo de produtos de um e-commerce. Cada produto possui nome, descrição e preço. Sinta-se livre para adicionar outros campos (como foto ou outros). Cada produto está relacionado a uma ou nenhuma categoria. As categorias são simples e possuem apenas um nome. Não é necessário adicionar sub-categorias, mas sinta-se livre para fazê-lo. Será necessário haver uma forma de autenticação para interagir com as APIs: documente-a. O projeto deve fornecer uma forma de executar o CRUD para os produtos e as categorias. Sinta-se encorajado a acrescentar recursos como paginação, filtragem de resultados e similares.
The project is available on Heroku
- Documentation available on https://ecommerce-fns.herokuapp.com/docs/
- Clone repository
- Create a virtualenv python 3.8
- Activate your virtualenv
- Install dependencies (gunicorn and psycopg2 are not required for development instance, only for deploy on heroku)
- Configure the instance with .env file
- Run the tests
git clone git@github.com:fnscoder/ecommerce.git ecommerce
cd ecommerce
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp contrib/sample-env .env
python manage.py testPOST /auth/register/
curl --location --request POST 'http://ecommerce-fns.herokuapp.com/auth/register/' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "my@email.com",
"password": "my-password",
"first_name": "MyName",
"last_name": "LastName"
}' POST /auth/login/
curl --location --request POST 'http://ecommerce-fns.herokuapp.com/auth/login/' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "my@email.com",
"password": "my-password",
}'After the login you will receive the user auth_token. It must be included on the request header as Authorization: Bearer <auth_token>
GET /docs/
GET /users/
GET, PUT, PATCH, DELETE /users/<id>/
POST /products/
Create a product using a existent category
curl --location --request POST 'http://ecommerce-fns.herokuapp.com/products/' \
--header 'Authorization: Bearer c01fd75f5d3e913bd8af58d26cb539db7c43f687' \
--header 'Content-Type: application/json' \
--data-raw '{
"category": {"id": 1},
"name": "bike",
"description": "super bike",
"price": 1500,
"quantity": 10
}'POST /products/
Create a product and create a category at same time
curl --location --request POST 'http://ecommerce-fns.herokuapp.com/products/' \
--header 'Authorization: Bearer c01fd75f5d3e913bd8af58d26cb539db7c43f687' \
--header 'Content-Type: application/json' \
--data-raw '{
"category": {"name": "new category"},
"name": "bike",
"description": "super bike",
"price": 1500,
"quantity": 10
}'GET /products/ (filters available - name, min_price and max_price)
curl --location --request GET 'http://ecommerce-fns.herokuapp.com/products/?name=bike&min_price=100&max_price=2000' \
--header 'Authorization: Bearer c01fd75f5d3e913bd8af58d26cb539db7c43f687' \
--header 'Content-Type: application/json'GET, PUT, PATCH, DELETE /products/<id>/
curl --location --request GET 'http://ecommerce-fns.herokuapp.com/products/2/' \
--header 'Authorization: Bearer c01fd75f5d3e913bd8af58d26cb539db7c43f687' \
--header 'Content-Type: application/json'GET, POST /categories/
curl --location --request POST 'http://ecommerce-fns.herokuapp.com/categories/' \
--header 'Authorization: Bearer c01fd75f5d3e913bd8af58d26cb539db7c43f687' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "food"
}'GET, PUT, PATCH, DELETE /categories/<id>/
curl --location --request GET 'http://ecommerce-fns.herokuapp.com/categories/1/' \
--header 'Authorization: Bearer c01fd75f5d3e913bd8af58d26cb539db7c43f687' \
--header 'Content-Type: application/json'More information on the documentation page https://ecommerce-fns.herokuapp.com/docs/