This example features API Rate limiting by IP and API Keys at the edge with Redis using Upstash.
The pattern for rate limiting is inspired by the GitHub API.
https://edge-functions-api-rate-limit-and-tokens.vercel.app
Deploy the example using Vercel:
Execute create-next-app with npm or Yarn to bootstrap the example:
npx create-next-app --example https://github.com/vercel/examples/tree/main/edge-functions/api-rate-limit-and-tokens api-rate-limit-and-tokens # or yarn create next-app --example https://github.com/vercel/examples/tree/main/edge-functions/api-rate-limit-and-tokens api-rate-limit-and-tokens
You'll need to have an account with Upstash. Once that's done, copy the .env.example file in this directory to .env.local (which will be ignored by Git):
cp .env.example .env.local
Then open .env.local and set the environment variables to match the REST API of your database. It should look like this:
UPSTASH_REST_API_DOMAIN = "us1-shiny-firefly-12345.upstash.io" UPSTASH_REST_API_TOKEN = "your-api-token" API_KEYS_JWT_SECRET_KEY = "a-secret-key"
Next, run Next.js in development mode:
npm install npm run dev # or yarn yarn dev
Deploy it to the cloud with Vercel (Documentation).
Template featuring API Rate limiting by IP and API Keys at the edge using Upstash.
This example features API Rate limiting by IP and API Keys at the edge with Redis using Upstash.
The pattern for rate limiting is inspired by the GitHub API.
https://edge-functions-api-rate-limit-and-tokens.vercel.app
Deploy the example using Vercel:
Execute create-next-app with npm or Yarn to bootstrap the example:
npx create-next-app --example https://github.com/vercel/examples/tree/main/edge-functions/api-rate-limit-and-tokens api-rate-limit-and-tokens # or yarn create next-app --example https://github.com/vercel/examples/tree/main/edge-functions/api-rate-limit-and-tokens api-rate-limit-and-tokens
You'll need to have an account with Upstash. Once that's done, copy the .env.example file in this directory to .env.local (which will be ignored by Git):
cp .env.example .env.local
Then open .env.local and set the environment variables to match the REST API of your database. It should look like this:
UPSTASH_REST_API_DOMAIN = "us1-shiny-firefly-12345.upstash.io" UPSTASH_REST_API_TOKEN = "your-api-token" API_KEYS_JWT_SECRET_KEY = "a-secret-key"
Next, run Next.js in development mode:
npm install npm run dev # or yarn yarn dev
Deploy it to the cloud with Vercel (Documentation).