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
You can choose from one of the following two methods to use this repository:
Deploy the example using Vercel:
Execute create-next-app
with pnpm to bootstrap the example:
pnpm 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:
pnpm 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
You can choose from one of the following two methods to use this repository:
Deploy the example using Vercel:
Execute create-next-app
with pnpm to bootstrap the example:
pnpm 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:
pnpm dev
Deploy it to the cloud with Vercel (Documentation).