JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2270
  • Score
    100M100P100Q110011F
  • License MIT

Http-proxy middleware for Nuxt 3.

Package Exports

  • nuxt-proxy
  • nuxt-proxy/middleware

Readme

nuxt-proxy

Version NPM

Http-proxy middleware for Nuxt and h3.

Installation

npm install nuxt-proxy

Usage

export default defineNuxtConfig({
  modules: ['nuxt-proxy'],
  // See options here https://github.com/chimurai/http-proxy-middleware#options
  proxy: {
    options: {
      target: 'https://jsonplaceholder.typicode.com',
      changeOrigin: true,
      pathRewrite: {
        '^/api/todos': '/todos',
        '^/api/users': '/users'
      },
      pathFilter: [
        '/api/todos',
        '/api/users'
      ]
    }
  },
  // OR
  // runtimeConfig: {
  //   proxy: {...}
  // }
})

// GET /api/todos -> https://jsonplaceholder.typicode.com/todos [304]
// GET /api/users -> https://jsonplaceholder.typicode.com/users [304]
<script setup>
// Base url is required
const { data } = useFetch('http://localhost:3000/api/todos')
</script>

Pass an array instead for multiple targets

export default defineNuxtConfig({
  modules: ['nuxt-proxy'],
  // See options here https://github.com/chimurai/http-proxy-middleware#options
  proxy: {
    options: [
      {
        target: 'https://jsonplaceholder.typicode.com',
        changeOrigin: true,
        pathRewrite: {
          '^/api/todos': '/todos'
        },
        pathFilter: [
          '/api/todos'
        ]
      },
      {
        target: 'https://api.spacexdata.com/v5',
        changeOrigin: true,
        pathRewrite: {
          '^/api/launches': '/launches/latest',
        },
        pathFilter: [
          '/api/launches',
        ],
      },
    ]
  }
})

// GET /api/todos -> https://jsonplaceholder.typicode.com/todos [304]
// GET /api/launches -> https://api.spacexdata.com/v5/launches/latest [304]

Runtime config

Runtime configuration is valid if you put the configuration inside "runtimeConfig" and set your environment variables

NUXT_PROXY_OPTIONS_TARGET=https://reqres.in/api
export default defineNuxtConfig({
  modules: ['nuxt-proxy'],
  runtimeConfig: {
    proxy: {
      options: { target: 'https://jsonplaceholder.typicode.com', ...{ /* config */} }
    }
  }
})
// GET /api/users -> https://reqres.in/api/users [304]

Or for multiple targets

export default defineNuxtConfig({
  modules: ['nuxt-proxy'],
  runtimeConfig: {
    proxy: {
      options: [
        { target: 'https://jsonplaceholder.typicode.com', ...{ /* config */} },
        { target: 'https://api.spacexdata.com/v5', ...{ /* config */} },
      ]
    }
  },
})

// GET /api/todos -> https://jsonplaceholder.typicode.com/todos [304]
// GET /api/launches -> https://fake.wobsoriano.space/launches/latest [304]
NUXT_PROXY_OPTIONS=[{}, {"target": "https://fake.wobsoriano.space"}]

License

MIT