Setup

Quick start

100% typed OpenAPI fetch for Nuxt

NuxtOpenFetch creates zero-overhead wrappers around $fetch and useFetch, with types generated from your OpenAPI schema. It uses awesome openapi-typescript generator under the hood.

Installation

Add nuxt-open-fetch to your project's dev dependencies:

pnpm add nuxt-open-fetch -D

Configuration

Then, add nuxt-open-fetch to the modules section of your Nuxt configuration:

nuxt.config.ts
export default defineNuxtConfig({
  modules: ['nuxt-open-fetch'],
  openFetch: {
    clients: {
      pets: {
        baseURL: 'https://petstore3.swagger.io/api/v3'
      }
    }
  }
})

By default NuxtOpenFetch will search for OpenAPI schemas in /openapi directory.

openapi/
  pets/
    openapi.yaml
nuxt.config.ts

Usage

That's it! Run the project, NuxtOpenFetch will generate fully typed and preconfigured OpenAPI clients for you:

<script setup lang="ts">
const { data, error } = await usePets('/pet/{petId}', {
  path: {
    petId: 1
  }
})
</script>

<template>
  <div>
    ...
  </div>
</template>

NuxtOpenFetch infers types from the URL. Prefer static string values over dynamic runtime values, e.g.:

Correct: /pets/{petId}

Incorrect: [...pathParts].join("/") + "{petId}"