I am building a Next.JS app that will be getting data from a Python API and an Postgres Database.
Normally this would be simple, except requirements are such that I need to send all requests from the server-side, not the user's client.
I have been working with and grokking getInitialProps
, but I am not confident that it is the full solution that I need because of this line in the README
:
For the initial page load,
getInitialProps
will execute on the server only.getInitialProps
will only be executed on the client when navigating to a different route via the Link component or using the routing APIs.
It seems that getInitialProps
is designed for the initial page load, and not for subsequent server-side data fetching.
How can I design my Next.JS app in such a way that all requests come from the server-side?
Notes:
Ty in advance for any help
I found a solution by wrapping Next.JS in Express!
I have pushed a simple example project to GitHub here
The repo has a nice README as well as comments in the code that detail what's going on.
Quick rundown:
nextApp.render(...)
which happens implicitly in standard Next.JS apps. See server.jsnextApp.render(...)
. See server.js.nextApp.render
provides passed values to the page in the context (ctx
) parameter of getInitialProps
. You can make these values available in the pages this.props
by returning them in getInitialProps
. See stars.jsSuggestions and improvements welcome!