One of the things I learned a while back was that database columns should not be mapped directly to the JSON responses an API serves (columns can change, backward compatibility etc).
There should be some layer of separation between the logic of forming the response and fetching/querying it.
In Rails we have Active Model Serializers and the new fast_jsonapi gem from Netflix. Is there a widely-used analogous package for Node or some best practices that large-scale organizations using Node (like Ebay, Paypal, Netflix etc) employ?
Assuming we're talking about an API built up on Express.
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (4)
When it comes to serialising to JSON, I don't think there's a better option than
JSON.stringify()
in Node, which is whatresponse.json()
uses in express, by the way.If you need to map database objects to response objects, you don't really need to pull in a library, you can just write a function to do any data transformation you need.
Django Rest Framework handles this layer of abstraction nicely
Is there something similar available in express? maybe a separate library to do that?
Create the file
serializer/router.ts
(or.js
), create an object that hasexpress.Router
http verbs methods. In each http method, pass the user passed middleware alongside with your serialization middleware. Export it and use it as if you're usingexpress.Router
. In your routes callnext()
instead of sending a response and the middleware will handle the serialization. For serialization you can use any general serialization library or write you're own.