javascript - Dodavanje proxyja u vite vodi me na taj proxy URL na mom localhostu. Želim ga koristiti samo za API pozive prema backendu


Evo mog vite.config.ts:

import { defineConfig } from 'vitest/config'
import vue from '@vitejs/plugin-vue'
import { quasar, transformAssetUrls } from '@quasar/vite-plugin'

const path = require('path');

// https://vitejs.dev/config/
export default defineConfig({
  test: {
    globals: true
  },
  plugins: [
    vue({
      template: {
        transformAssetUrls
      }
    }),
    quasar({
      sassVariables: 'src/assets/scss/quasar-variables.sass'
    })
  ],
  resolve: {
    alias: {
      "@": path.resolve(__dirname, './src'),
    },
  },
  server: {
    proxy: {
      '/socket': {
        target: 'wss://abc-website.com:4221/',
        changeOrigin: true,
        ws: true,
        rewrite: (path) => path.replace('^/socket', ''),
      },
      '/streaming/': {
        target: 'https://abc-website.com/',
        changeOrigin: true,
      },
      '/': {
        target: 'https://abc-website.com/',
        changeOrigin: true,
        secure: false,
        ws: true
      },
    }
  }
})

Kad god se moja aplikacija učita, ona me preusmjeri na https://abc-website.com dok sam na svom localhost portu.

Želim koristiti gornji URL samo za pozive backend API-ja, poput https://abc-webite.com/api/auth.

Također sam postavio baseURL na "api/" nakon što sam postavio proxy u vite.config.ts.

Također, nakon male promjene, poziva REST API kao https://localhost:3000/auth, trebala bi zapravo biti https://localhost:3000/api/auth

Čini se da Vite proxy ne radi ispravno za mene.

Odgovor #1

Mislim da bi mogao nešto ovako:

server: {
  proxy: {
    // ... your other proxies
    '/api': {
      target: 'https://abc-website.com/',
      changeOrigin: true,
      secure: false,
      ws: true,
      rewrite: (path) => path.replace(/^\/app/, ''),
    },
  }
}

Tada svi vaši zahtjevi prema stranicama poput localhost:3000/api/my-endpoint trebali bi biti proslijeđeni na https://abc-website.com/my-endpoint. Ne možete proslijediti sve "osnovne" zahtjeve, jer su rezervirani za posluživanje svega ostalog, svih resursa, index.html datoteka i slično, ali također sam ljubazan