Usiamo Django per creare back-end per applicazioni Web, fornendo API RESTful per l'app Ember.Django REST Framework - più modelli/API?
So (evolutivamente) abbiamo iniziato con la seguente struttura semplice:
project root
|
|-app1/models.py .... no views.py
|
|-app2/models.py .... no views.py
|
|-app3/models.py .... no views.py
|
\- restapi - provides REST API for app*: huge views.py, huge serializers.py, huge test.py
Questo è facile da usare, soprattutto con vista sfogliabile del DRF:
@api_view(['GET'])
def api_root(request, format=None):
return Response(
{
'users': reverse('current-user-detail', request=request),
'interfacesettings': reverse('interface-settings', request=request),
............................................................
'preferences': reverse('preferences', request=request),
}
)
modelli abbastanza poco abbiamo avuto/API per rendere il nostro restapi.app troppo complesso e disordinato e abbiamo iniziato a considerare l'utilizzo di qualcosa di più logico:
project root
|
|-app1/models.py .... views.py, serializers.py, tests.py
|
|-app2/models.py .... views.py, serializers.py, tests.py
|
|-app3/models.py .... views.py, serializers.py, tests.py
|
\- we do not need rest api anymore (but where will we put our api_root?)
Dall'altro lato, abbiamo ora tutti i test complicati (che coinvolgono pochi modelli) in un posto che è conveniente. E riutilizziamo molto le funzioni dei serializzatori. E abbiamo una api_root. Quindi probabilmente potremmo avere qualcosa del genere:
project root
|
|-app1/models.py .... views.py (app1 API), serializers.py, tests.py
|
|-app2/models.py .... views.py (app2 API), serializers.py, tests.py
|
|-app3/models.py .... views.py (app3 API), serializers.py, tests.py
|
\- restapi - views.py (api_root), tests.py for complicated tests and serializers.py for common functions
Quale approccio è migliore? E quali sono le migliori pratiche comuni qui? C'è qualche progetto aperto che possiamo dare un'occhiata?