How to generate api and pages for all days in a year - React/Next JS?

Viewed 22

I have an api that can accept all days of a year and return information for all days.

https://api.mywebsite.org/data/all/${month}/${day}

Right now, I have a page called https://mywebsite.org/today which returns info for today. My goal is to make the page available for all days of the year. For example Feb 28 would be:

https://mywebsite.org/today/feb/28

will pass 02 (month) and 28(day) to the api.

My routes are very simple. For Example for users, my route looks like below but users are stored in a database. I am not guessing or making up values like I want to do for dates.

/user/[userId]/index.js

I can create a route called /today/[date]/index.js but how to create this for all days of the year?

I would like users to be able to just enter any month/day.

1 Answers

What you need to use is called Dynamic Routes (you can read more about here)

First of all you need to name the file like this pages/[...params].js That will match a set of routes like:

 1. /feb
 2. /feb/23
 3. /a/b/c

Don't forget to validate the parameters (I suppose third case should redirect to 404)

You can use useRouter hook to get the parameters from the URL:

import { useRouter } from 'next/router'

const Component = () => {
  const router = useRouter()
  const { params} = router.query // this will return an array of query parameters

  // parameters validation here

  return <></>
}

export default Component 
Related