Dynamically loading data from the server is why getServerSideProps
was added
to Next.js. We build upon that to add a more rich feature set. But let start
with the basics first.
The standard method that you might already be familiar with, looks something like this:
export const getServerSideProps = async () => { return { props: { name: 'smeijer' } }; };
#handle » get
To make next-runtime
handle this page route, simply wrap it with our handle
util. By adding it on the page level, we only process requests to those specific
paths. All other pages are unaffected by your change.
import { handle } from 'next-runtime'; export const getServerSideProps = handle({ async get() { return { props: { name: 'smeijer' } }; }, });
That's it, your page works as before, except it also serves as json
api for
GET
requests. We'll come back to that.
Just for convenience, we ship a json
util that removes the need to wrap props
in props
. I mean, do we ever not return props?
import { handle, json } from 'next-runtime'; export const getServerSideProps = handle({ async get() { return json({ name: 'smeijer' }); }, });
How's that? As already briefly mentioned, by defining the handler inside our
handle
method, we not only serve the page component it's initial props, but
this route now also supports json request. Give it a shot and request this same
page with the browser, and curl or postman. Amazing, right?
curl -H "Accept: application/json" http://example.com/page-path # » { name: 'smeijer' }