First of all, I should say that, at least for me, choosing a framework should not bind you to a programming language, nor stop you from using one.
As for me, I usually use (fastify JS/TS), (FastAPI Python), (Javalin Kotlin), (Gin Golang), and the factors affecting consideration are
- Minimal learning curve
- Simplicity / minimalism to create decent security (e.g. validation, rate limit, CSRF protection, response headers)
Integration with frontend frameworks
- I actually care very little about different components of backend's integration. Never really tried Django, Spring, Rails, Grails, Nest.js.
- Not all calls are HTTP(S). I do have to use WebSockets sometimes. Never tried gRPC or SOAP. Not yet a GraphQL frequentist.
- Non-frontend multi-language connection
- So far, I usually use HTTP. But I will tried to use interprocess communication (in Electron / Node.js) if possible. I have heard things about ZeroMQ and RabbitMQ, but I have not tried.
- I am very worried about security, despite standing only on localhost; port blocked from external (e.g. via ufw).
- I am considering learning testability, e.g. different types, coverage, dependency inversion.