Backend-Driven Frontend
An in-between paradigm can sometimes work well. Here, the backend renders HTML files in real time to deliver to the client. This way, the backend can dynamically change content based on parameters, e.g. user, location, etc. However, can get messy as you typically need to write generic-style HTML or use a templating language. Additionally, it takes extra effort to create a standalone API.
Example: Netflix could have a template for displaying a list of recommendations. They could use this template to render HTML for different webpages, e.g. horror movies, action movies, TV shows, etc.