De meeste web frameworks denken dat een route naam met een manier om
via de naam een link te genererenn goed genoeg is voor link generatie.
Ik denk daar nogal anders over. Morepath associeert routes met model
classes zodat om een link naar een model instance kan vragen.
Dat is wel anders, en heeft een redelijk belangrijk minpunt: je forceert een
1-op-1 mapping tussen models en
URLs, terwijl het niet ongebruikelijk is om hetzelfde model voor meerdere URLs
te gebruiken.
Ja, da's een beperking. Maar ik denk meestal een goede: waarom laat je
het model nu op meerdere plekken terugkomen als je gewoon een link kan
maken? De voordelen zijn natuurlijk dat je zonder nadenken en opzoeken
van een route naam kunt linken. Maar er zijn natuurlijk tradeoffs.
Models hard aan URLs koppelen koppelen lijkt mij ook een anti-pattern.
Een paar redenen waarom het een anti-pattern is (NB: dit is constructief
Martijn!) is dat je het volgende verliest:
# meerdere endpoints voor zelfde model.
Een simpel voorbeeld daarvan is dat je een PersonModel hebt in de
backend, die ontsloten wordt via een ClientResource, UserResource en
EmployeeResource.
# wijzigen backend terwijl gepubliceerde API gelijk blijft.
Wanneer jij zelf de enige consumer van je API bent is dit misschien
minder kritisch, maar als derden gebruik maken van je API wil jij niet
dat als jij besluit of genoodzaakt bent om de backend anders in te
richten, dat alle clients (die jij niet eens hoeft te kennen) hun API
/moeten/ updaten (of dat jij dus je backend niet kunt aanpassen).
# versioning van de API.
En het omgekeerde geval: als je backend gelijkt blijft maar je besloten
hebt om de API te veranderen, wil je niet een tweede backend ernaast
hoeven zetten.
_______________________________________________
Python-nl mailing list
Python-nl@python.org
https://mail.python.org/mailman/listinfo/python-nl