diff --git a/django-rest.html b/django-rest.html index 5a1fd87..e2e7520 100644 --- a/django-rest.html +++ b/django-rest.html @@ -227,7 +227,179 @@ + +
+ +
+ +
+

Routes

+

+router = DefaultRouter()
+router.register(r'base_resource', ModelViewSet)
+urlpatterns = router.urls
+						
+ +

Onde:

+ + +
+ +
+

Por que "Routes"?

+ +

Para não precisar criar dois GETS, um POST, um PUT, + um PATCH e um DELETE.

+
+ +
+

E o que diabos é um ViewSet?

+ +

ViewSet define as funções para cada um dos verbos dentro do resource:

+ + +
+ +
+

ModelViewSet

+ +

Um ModelViewSet aplica as funções acima sobre um Model.

+ +

+class ProductViewSet(viewsets.ModelViewSet):
+    queryset = Product.objects.all()
+    serializer_class = ProductSerializer
+						
+ +

Existe ainda ReadOnlyModelViewSet que só define as funções + list() e retrieve().

+
+ +
+

Pera, pera... Serializer?

+ +

Serializers definem campos de resultados e sua validação, + caso estejam sendo usados como entradas (assim como Forms + são usados para validar entradas de dados por forms).

+ +

+class UserSerializer(serializers.ModelSerializer):
+
+    class Meta:
+        model = Product
+        fields = ('name', 'price')
+						
+
+ +
+
+

Fluxo REST Framework

+ + +
+ +
+

Fluxo REST Framework (contd.)

+ + +
+
+ +
+
+

PS: Outras coisas legais

+ +

Vem com um serializador JSON como padrão, mas existem outros:

+ + +
+ +
+

JSON

+ +

+{
+    "count": 1,
+    "next": null,
+    "previous": null,
+    "results": [
+        {
+            "url": "http://127.0.0.1:8000/users/1/",
+            "username": "jbiason",
+            "email": "",
+            "groups": []
+        }
+    ]
+						
+
+ +
+

YAML

+ +

+count: 1
+next: null
+previous: null
+results:
+- email: ''
+  groups: []
+  url: http://127.0.0.1:8000/users/1/
+  username: jbiason
+						
+
+ +
+

XML

+ +

+
+1http://127.0.0.1:8000/users/1/jbiason
+						
+
+ +
+

(Todos os casos, só foi alterado o header "Accept" no request; nenhuma + alteração de código -- com exceção do settings.py para ativar os + serializers.)

+
+