Criação e Deploy de API REST Django na AWS

Como criar API REST Django e publicar na AWS
Voltar

RESUMO EM ANDAMENTO

Conceito:

Criação de projeto backend API REST com Django REST Framework, utilizando ViewSets e Routers. Publicação (deploy) em cloud Amazon Web Services (AWS). Consumo da API REST com Postman. Pré-requisitos são conta gratuita no Postman e na AWS. Será utilizado serviço free tier AWS EC2 (gratuito). API REST conciste em CRUD de loft em Londres.


API REST Django:

  1. Instalar Django: pip3 install django djangorestframework django-cors-headers --break-system-packages
  2. Criar projeto e app: django-admin startproject loft_api && cd loft_api && python manage.py startapp lofts
  3. Editar loft_api/settings.py, complementando com códigos:
    
    INSTALLED_APPS = [
        # Outro conteúdo
        "rest_framework",
        "corsheaders",
        "lofts",
    ]
    
    MIDDLEWARE = [
        # Outro conteúdo
        "corsheaders.middleware.CorsMiddleware",
    ]
    
    CORS_ALLOW_ALL_ORIGINS = True
    
    REST_FRAMEWORK = {
        "DEFAULT_RENDERER_CLASSES": [
            "rest_framework.renderers.JSONRenderer",
        ],
        "DEFAULT_PARSER_CLASSES": [
            "rest_framework.parsers.JSONParser",
        ]
    }
    
  4. Em lofts/models.py, criar model Loft:
    
    from django.db import models
    
    class Loft(models.Model):
        title = models.CharField(max_length=50)
        description = models.CharField(max_length=255)
        address = models.CharField(max_length=50)
        price = models.DecimalField(max_digits=10, decimal_places=2)
    
        def __str__(self):
            return self.title
    
  5. Em lofts/serializers.py, informar serializadores:
    
    from rest_framework import serializers
    from .models import Loft
    
    class LoftSerializer(serializers.ModelSerializer):
        class Meta:
            model = Loft
            fields = '__all__'
    
  6. Em lofts/views.py, informar ViewSet de loft:
    
    from rest_framework import viewsets
    from .models import Loft
    from .serializers import LoftSerializer
    
    class LoftViewSet(viewsets.ModelViewSet):
        queryset = Loft.objects.all()
        serializer_class = LoftSerializer
    
  7. Em lofts/urls.py, informar rotas locais:
    
    from rest_framework.routers import DefaultRouter
    from .views import LoftViewSet
    
    router = DefaultRouter()
    router.register(r'lofts', LoftViewSet, basename='loft')
    
    urlpatterns = router.urls
    
  8. Em loft_api/urls.py, informar rotas globais:
    
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include('lofts.urls')),
    ]
    
  9. Na pasta raíz do projeto, criar e executar banco de dados:
    • python manage.py makemigrations
    • python manage.py migrate
  10. Executar projeto: python manage.py runserver 0.0.0.0:8000

Elaborado por Mateus Schwede
ubsocial.github.io