Criando Uma API Rest Utilizando Django Rest Framework — Parte 2

Marcos Rabaioli
2 min readSep 29, 2017

--

Fonte: http://www.django-rest-framework.org

Na primeira parte deste tutorial falei sobre models, serializers e views, nesta segunda parte falarei um pouco sobre permissões e autenticações. Mas antes vamos expandir um pouco nossa aplicação, acrescentando mais models, serializers, views e urls.

Ampliando Models, Serializers e Views

Vamos acrescentar Band, Album e Members aos nossos models

myapp/models.py

myapp/serializers.py

myapp/views.py

myapp/urls.py

A classe RetrieveUpdateDestroyAPIView implementa para nós os métodos GET, PUT, PATCH e DELETE.

Como alteramos o modelo Music inserindo uma chave estrangeira para o modelo Album, temos que limpar nosso banco pra poder gerar as migrações e poder aplicá-las. Fazemos isso com os seguintes comandos

$ python manage.py flush

$ python manage.py makemigrations

$ python manage.py migrate

Pronto! Agora temos um pouco mais de informações para brincar.

Autenticação e Permissões

Atualmente nossa API não tem restrições sobre quem pode visualizar, editar, excluir ou atualizar os registros. Não queremos que pessoas não autenticadas possam ter esses acessos, então vamos restringir isso.

O DRF nos fornece em suas funcionalidades nativas 4 tipos de autenticação, BasicAuthentication, TokenAuthentication, SessionAuthentication e RemoteUserAuthentication. Para implementar outros padrões de autenticação, como os padrões de OAuth2, existem pacotes de terceiros, como o Django OAuth Toolkit (futuramente pretendo fazer uma postagem falando sobre esse pacote, que é muito legal!). Neste tutorial utilizarei o padrão SessionAuthentication. Let’s work!

Modificamos nossa view MusicList conforme o código abaixo

Importamos de rest_framework.authentication a classe SessionAuthentication. Sobrescrevemos a variável authentication_classes definindo que a view só aceita autenticação SessionAuthentication.

Importamos também as permissões padrão de rest_framework.permissions e sobrescrevemos a variável permission_classes definindo que só quem tiver autenticado poderá ter acesso aos métodos desta view. É possível ter mais de uma permissão também.

Se você tentar acessar http://127.0.0.1:8000/musics/ agora provavelmente ira se deparar com isso

Isso acontece pois ainda não temos um usuário cadastrado no banco e não estamos autenticados. Vamos criar nosso superusuário então

$ python manage.py createsuperuser

Agora você pode se autenticar em http://127.0.0.1:8000/admin/ e ter acesso aos dados das views. :)

Vamos replicar o que fizemos na view MusicList para as outras views.

Muito fácil não é mesmo? Em poucos minutos já criamos uma API Rest com modelos, serializadores, autenticação e permissões. :)

Para maiores informações sobre permissões clique aqui e para autenticação clique aqui e consulte a documentação oficial do DRF. Nos vemos na terceira parte desse tutorial.

Todo código produzido nesse tutorial pode ser acompanhado em:

Até breve ;)

--

--