Proxy 
Outlined 
The project creates the base path of the service and a string to match the proxy through the createServiceConfig function.
Code Location
@/utils/service.ts
The proxy is then created in the createViteProxy function based on the configuration obtained above.
Enable/disable 
Enable or disable proxies via VITE_HTTP_PROXY in the env file.
Code Location
~.env
In @/service/request/index.ts, you decide whether the URL needs to handle proxies by passing isHttpProxy to the second parameter of getServiceBaseURL, which is determined based on the environment in which the code is running in conjunction with VITE_HTTP_PROXY. You can deconstruct the request URL here by passing different parameters.
const isHttpProxy = import.meta.env.DEV && import.meta.env.VITE_HTTP_PROXY === 'Y';
const { baseURL } = getServiceBaseURL(import.meta.env, isHttpProxy);
const { otherBaseURL } = getServiceBaseURL(import.meta.env, false);Principle 
SoybeanAdmin simplifies the process of configuring proxies by setting the matching string to /proxy-default/ (other requests use proxy-{key}). This way, when configuring the proxy, you only need to replace /proxy-default/ in the request address with the actual request address, thus achieving the proxy configuration.
{
  '/proxy-default': {
    target: 'https://default.com',
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/proxy-default/, ''),
  },
  '/proxy-demo': {
    target: 'https://demo.com',
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/proxy-demo/, ''),
  }
}Note 
Here are 2 configurations that are easily confused:
- Suppose the path of a request is 
https://example.com/api/user, most would configure the proxy like this: 
{
  '/api': {
    target: 'https://example.com',
    changeOrigin: true,
  }
}In this case,
/apiserves both as the matching string and the request path. Therefore, there is no rewrite configuration needed because the request path and the matching string are the same.
- Suppose the path of a request is 
https://example.com/user, but the matching string for the proxy configuration is/api 
{
  '/api': {
    target: 'https://example.com',
    changeOrigin: true,
    rewrite: (path) => path.replace(/^\/api/, ''),
  }
}In this case,
/apiserves as the matching string, and user serves as the request path. Therefore, a rewrite configuration is needed to remove the matching string.
In SoybeanAdmin, the second configuration with rewrite is used. This is to support proxies for multiple services and avoid conflicts where multiple services contain the same /api path. Therefore, SoybeanAdmin chooses to create matching strings like /proxy-* to separate the matching string from the request path, avoiding conflicts.