Skip to content

Commit

Permalink
docs: README for @unkey/nextjs unkeyed#2162 (unkeyed#2166)
Browse files Browse the repository at this point in the history
  • Loading branch information
Ionfinisher authored Oct 3, 2024
1 parent 713e831 commit cff6f74
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 1 deletion.
93 changes: 93 additions & 0 deletions packages/nextjs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<div align="center">
<h1 align="center">@unkey/nextjs</h1>
<h5>`@unkey/nextjs` the official SDK for Next.js. Just use it in your route handlers a direct and type-safe method to verify API keys.</h5>
</div>

<div align="center">
<a href="https://www.unkey.com/docs/libraries/ts/nextjs">Documentation</a>
</div>
<br/>

## Installation

```bash
npm install @unkey/nextjs
```

## Quickstart

Protecting API routes is as simple as wrapping them with the ```withUnkey``` handler:

```ts
import { NextRequestWithUnkeyContext, withUnkey } from '@unkey/nextjs';

export const POST = withUnkey(async (req) => {

// Process the request here
// You have access to the verification response using `req.unkey`
console.log(req.unkey);

return new Response('Your API key is valid!');
});
```

That’s it! Since this is just handling key verification, there’s no need to specify a root key as an environment variable.

If you want to customize how withUnkey processes incoming requests, you can do so as follows:

## ```getKey```
By default, withUnkey will look for a bearer token located in the ```authorization``` header. If you want to customize this, you can do so by passing a getter in the configuration object:

```ts
export const GET = withUnkey(async (req) => {
// ...
}, {
getKey: (req) => new URL(req.url).searchParams.get("key"),
});
```

## ```onError```

You can specify custom error handling. By default errors will be logged to the console, and ```withUnkey``` will return a NextResponse with status 500.

```ts
export const GET = withUnkey(async (req) => {
// ...
}, {
onError: async (req, res) => {
await analytics.trackEvent(`Error ${res.code}: ${res.message}`)
return new NextResponse("Unkey error", { status: 500 })
}
});
```

## ```handleInvalidKey```

Specify what to do if Unkey reports that your key is invalid.

```ts
export const GET = withUnkey(async (req) => {
// ...
}, {
handleInvalidKey: (req, res) => {
return new Response("Unauthorized", { status: 401 })
}
});
```


## Disable telemetry

By default, Unkey collects anonymous telemetry data to help us understand how our SDKs are used.

If you wish to disable this, you can do so by passing a boolean flag to the constructor:

```ts
export const GET = withUnkey(async (req) => {
// ...
}, { disableTelemetry: true });
```

### Documentation

[Read the full documentation](https://www.unkey.com/docs/libraries/ts/nextjs)
2 changes: 1 addition & 1 deletion packages/nextjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"url": "https://github.com/unkeyed/unkey/issues"
},
"homepage": "https://github.com/unkeyed/unkey#readme",
"files": ["./dist/**"],
"files": ["./dist/**", "README.md"],
"author": "Andreas Thomas <[email protected]>",
"scripts": {
"build": "tsup"
Expand Down

0 comments on commit cff6f74

Please sign in to comment.