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

Antwoord per e-mail aan