URL-адрес префикса в модуле Swagger - PullRequest
2 голосов
/ 21 марта 2020

Я использую гнездо js и swagger в качестве документации, но модуль Swagger игнорирует setGlobalPrefix (). в моем environemnt префикс api API_PREFIX = / api / v2, у меня нет проблем при тестировании с почтальоном, потому что конечные точки / url работает, что http://localhost: 5000 / api / v2 / user / profile

, но swagger не может получить префикс / api / v2, URL запроса swagger равен http://localhost: 5000 / user / profile , что неверно.

Any идея? Спасибо за любую помощь.

настройки

```const SWAGGER_PREFIX = '/docs';

async function bootstrap(): Promise<void> {
  const app = await NestFactory.create(AppModule);

  if (!process.env.SWAGGER_ENABLE || process.env.SWAGGER_ENABLE === '1') {
    // eslint-disable-next-line @typescript-eslint/no-use-before-define
    createSwagger(app);
  }

  app.use(bodyParser.json());
  app.use(helmet());
  app.use(
    cors({
      origin: process.env.API_CORS || '*'
    })
  );

  app.setGlobalPrefix(process.env.API_PREFIX || API_DEFAULT_PREFIX);

  const logInterceptor = app.select(CommonModule).get(LogInterceptor);
  app.useGlobalInterceptors(logInterceptor);

  await app.listen(process.env.API_PORT || API_DEFAULT_PORT);
}

function createSwagger(app: INestApplication) {
  const version = require('../package.json').version || '';

  const options = new DocumentBuilder()
    .setTitle(SWAGGER_TITLE)
    .setDescription(SWAGGER_DESCRIPTION)
    .setVersion(version)
    .setBasePath(process.env.API_PREFIX || API_DEFAULT_PREFIX)
    .addBearerAuth()
    .build();

  const document = SwaggerModule.createDocument(app, options);
  SwaggerModule.setup(SWAGGER_PREFIX, app, document);[![enter image description here][1]][1]


//swagger - the request url is http://localhost:5000/user/profile
which is supposed to be  http://localhost:5000/api/v2/user/profile

1 Ответ

0 голосов
/ 23 марта 2020

Вы уверены, что эта строка

  app.setGlobalPrefix(process.env.API_PREFIX || API_DEFAULT_PREFIX);

и эта строка оценивают одинаково

.setBasePath(process.env.API_PREFIX || API_DEFAULT_PREFIX)
...