REST API design: the decisions that make an API pleasant to use
An API is a product with developers as users. Most of what makes one good is consistency, not cleverness.
Backend engineering guides covering Node.js runtime behaviour, REST and GraphQL API design, authentication, queues and background jobs.
An API is a product with developers as users. Most of what makes one good is consistency, not cleverness.
Node is single-threaded for your code. Every millisecond you spend in a synchronous loop is a millisecond nobody else's request is being served.
The sessions-versus-JWT argument is really an argument about revocation. Decide how fast you need to be able to log someone out.
Rate limiting is not just abuse prevention. It is the mechanism that stops one client's bad afternoon from becoming everyone's outage.
Every request that sends an email, generates a file or calls a third party is a request that should have returned already.
GraphQL solves a real problem for a specific shape of team. If you are not that team, it is a large bill for flexibility you will not use.
The goal of error handling is not to prevent crashes. It is to make sure that when something fails, you can tell what, where and for whom.
Microservices solve an organisational problem with a distributed systems bill. If you do not have the organisational problem, you just have the bill.
Webhooks are an API you deliver to someone else's unreliable server. Design for their failures, not just your success.
The hard part of versioning is not the URL scheme. It is agreeing on what counts as breaking, and then actually retiring the old version.
You cannot debug what you cannot picture. This is the map of a production request, layer by layer.
No spam. Just the occasional case study and craft breakdown.