loopback 4构建时生成openapi.json

问题描述 投票:0回答:1

我想在环回4 api上生成openapi.json文件,而不必启动服务器并请求openapi端点。在回送文档中找不到任何方法。

有什么办法生成该文件吗?

loopbackjs loopback4
1个回答
0
投票

rest.server.ts中的方法getApiSpec()@ loopback / rest / rest.server.ts。

index.ts中的添加方法:

// Node module: @loopback/example-express-composition
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT

import { ExpressServer } from './server';
import { ApplicationConfig } from '@loopback/core';
import { RequestContext } from '@loopback/rest';

export { ExpressServer };

export async function main(options: ApplicationConfig = {}) {
  const server = new ExpressServer(options);
  await server.boot();
  await server.start();

  console.log('Server is running at http://127.0.0.1:3000');
}

export async function getOpenApiJSONtoFile(options: ApplicationConfig = {}) {
  const server = new ExpressServer(options);

  await server.boot();

  return server.lbApp.restServer.getApiSpec()
}

并创建用于创建json的文件:

const application = require('./dist');
const fs = require('fs');


const config = {
  rest: {
    port: +process.env.PORT || 3000,
    host: process.env.HOST || 'localhost',
    openApiSpec: {
      // useful when used with OpenAPI-to-GraphQL to locate your application
      setServersFromRequest: true,
    },
    // Use the LB4 application as a route. It should not be listening.
    listenOnStart: false,
  },
};
application.getOpenApiJSONtoFile(config)
  .then(result => {
    let data = JSON.stringify(result);
    fs.writeFileSync('openapi.json', data);
  })
  .catch(err => { console.log(err) });
© www.soinside.com 2019 - 2024. All rights reserved.