NestJS:如何在生产构建中隐藏端点?
NestJS: How to hide an endpoint in production build?
我想添加一个可以简化 development/testing 的端点。同时,生产中不需要这个端点。来自 Java 世界,总是有开箱即用的解决方案(例如,使用配置文件),但我在 NestJS 文档中没有找到类似的东西。
问题:有没有办法在 NestJS 中实现端点,如果该应用程序是为生产用途构建的,则该端点将不可用?
一些选项取决于您的 use-case:
您有基于身份验证或角色的访问控制方案吗?授权? NestJS 有一些 Auth 中间件可能有助于解决这个问题,但如果这是 one-off: tutorial
则可能太重量级了
一种快速而宽松的方法是根据环境变量 return 404。在您的开发服务器中设置与生产环境不同的环境变量。
if(process.env.ENV_VAR === 'production') {
throw new HttpException('Not Found', HttpStatus.NOT_FOUND)
}
- 如果您在 Prod 或 Out 中始终需要大量内部路由,那么执行此操作的一个好方法可能是通过在您的项目中添加第二台服务器来设置私有和 public 路由,并且以不同的方式代理它。
我想添加一个可以简化 development/testing 的端点。同时,生产中不需要这个端点。来自 Java 世界,总是有开箱即用的解决方案(例如,使用配置文件),但我在 NestJS 文档中没有找到类似的东西。
问题:有没有办法在 NestJS 中实现端点,如果该应用程序是为生产用途构建的,则该端点将不可用?
一些选项取决于您的 use-case:
您有基于身份验证或角色的访问控制方案吗?授权? NestJS 有一些 Auth 中间件可能有助于解决这个问题,但如果这是 one-off: tutorial
则可能太重量级了一种快速而宽松的方法是根据环境变量 return 404。在您的开发服务器中设置与生产环境不同的环境变量。
if(process.env.ENV_VAR === 'production') {
throw new HttpException('Not Found', HttpStatus.NOT_FOUND)
}
- 如果您在 Prod 或 Out 中始终需要大量内部路由,那么执行此操作的一个好方法可能是通过在您的项目中添加第二台服务器来设置私有和 public 路由,并且以不同的方式代理它。