HTTP Proxy middleware available in API Middleware provided by Next.js.
The easiest way to install next-http-proxy-middleware
is with npm.
npm install next-http-proxy-middleware
Alternately, download the source.
git clone https://github.com/stegano/next-http-proxy-middleware.git
This middleware is implemented using the http-proxy
library. You can use the existing options provided by http-proxy
. And you can rewrite the api path using pathRewrite
, an additional option provided by this middleware.
pathRewrite
optionpathRewrite.patternStr
replace the URL string with the value pathRewrite.replaceStr
.onProxyInit
optionYou can access the http-proxy
instance using the onProxyInit
option. See the example below.
const handleProxyInit = (proxy: httpProxy) => {
/**
* Check the list of bindable events in the `http-proxy` specification.
* @see https://www.npmjs.com/package/http-proxy#listening-for-proxy-events
*/
proxy.on('proxyReq', (proxyReq, req, res) => {
...
});
proxy.on('proxyRes', (proxyRes, req, res) => {
...
});
};
export default async (req: NextApiRequest, res: NextApiResponse)
=> httpProxyMiddleware(req, res, {
...
target: 'http://example.com',
onProxyInit: handleProxyInit,
}
);
Refer to the following for how to use Next.js API Middleware
// pages/api/[...all].ts
export const config = {
api: {
// Enable `externalResolver` option in Next.js
externalResolver: true,
},
}
export default (req: NextApiRequest, res: NextApiResponse) => (
isDevelopment
? httpProxyMiddleware(req, res, {
// You can use the `http-proxy` option
target: 'https://www.example.com',
// In addition, you can use the `pathRewrite` option provided by `next-http-proxy-middleware`
pathRewrite: [{
patternStr: '^/api/new',
replaceStr: '/v2'
}, {
patternStr: '^/api',
replaceStr: ''
}],
})
: res.status(404).send(null)
);
externalResolver
is an explicit flag that tells the server that this route is being handled by an external resolver. Enabling this option disables warnings for unresolved requests.multipart/form-data
multipart/form-data
, refer to the Issues belowThanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Version | Tag | Published |
---|---|---|
1.2.4 | latest | 2mos ago |