nuxt-api-party
Nuxt 3 module to securely connect with any API.
Features
๐ช Dynamic composable names๐ Protected API credentials in the client๐ชข Token-based authentication built-in or bring your own headers๐ง Connect multiple API endpoints๐ฑ Feels just likeuseFetch
๐ Cached responses๐ฆพ Strongly typed
Setup
# pnpm
pnpm add -D nuxt-api-party
# npm
npm i -D nuxt-api-party
Basic Usage
Add this module nuxt-api-party
to your Nuxt config and prepare your first API connection by setting an endpoint object with the following properties for the apiParty
module option:
// `nuxt.config.ts`
export default defineNuxtConfig({
modules: ['nuxt-api-party'],
apiParty: {
endpoints: {
jsonPlaceholder: {
url: process.env.JSON_PLACEHOLDER_API_BASE_URL!,
// Global headers sent with each request
headers: {
Authorization: `Bearer ${process.env.JSON_PLACEHOLDER_API_TOKEN}`
}
}
}
}
})
If you were to call your API jsonPlaceholder
, the generated composables are:
$jsonPlaceholder
โ Returns the response data, similar to$fetch
useJsonPlaceholderData
โ Returns multiple values similar touseFetch
Use these composables in your templates or components:
<script setup lang="ts">
const { data, pending, refresh, error } = await useJsonPlaceholderData('posts/1')
</script>
<template>
<h1>{{ data?.title }}</h1>
<pre>{{ JSON.stringify(data, undefined, 2) }}</pre>
</template>
โน๏ธ You can connect as many APIs as you want, just add them to theendpoints
object.
๐ป Development
- Clone this repository
- Enable Corepack using
corepack enable
- Install dependencies using
pnpm install
- Run
pnpm run dev:prepare
- Start development server using
pnpm run dev
Special Thanks
- Dennis Baum for sponsoring the initial version of this package.
- SVGBackgrounds.com for the OpenGraph image background pattern.
License
MIT License ยฉ 2022-2023 Johann Schopplich