从我在 Azure 上的 NestJS 应用程序中,我只提供主要功能。我无法看到我的应用程序中的所有端点。所有端点均按预期可达。我需要将此功能应用程序连接到 API 管理。目前,API 管理仅看到一个端点(主端点),因为应用程序没有向 APIM 提供任何其他内容。
为什么函数应用程序只显示一个 http 函数?我应该更改什么才能获取所有函数的列表?
这是Azure功能的截图:
这是 function.json 文件的屏幕截图:
在 C# 中,不需要更改 function.json 文件。它能够自动识别它。
这是端点之一的 NestJS 代码:
主要.azure.ts
export async function createApp(): Promise<INestApplication> {
const app = await NestFactory.create(AppModule);
app.setGlobalPrefix('api');
app.enableCors(corsOptions);
app.use(json({ limit: '50mb' }));
app.use(urlencoded({ extended: true, limit: '50mb' }));
app.enableShutdownHooks();
await app.init();
return app;
}
main函数index.ts:
import { Context, HttpRequest } from '@azure/functions';
import { AzureHttpAdapter } from '@nestjs/azure-func-http';
import { createApp } from 'src/main.azure';
function createPsuedoApp(createApp: () => Promise<any>): () => Promise<any> {
return async (): Promise<any> => {
const app = await createApp();
const psuedoApp = {
getHttpAdapter: () => {
return {
getInstance: () => {
return (req: any, res: any) => {
const done = req.context.done;
req.context.done = (err?: string | Error, result?: any) => {
res.writeHead();
done(err, result);
};
app.getHttpAdapter().getInstance()(req, res);
};
},
};
},
};
return psuedoApp;
};
}
export default function (context: any, req: HttpRequest): void {
AzureHttpAdapter.handle(createPsuedoApp(createApp), context, req);
}
应用程序控制器:
@Controller('APP')
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHelloWorldFromApp() {
return 'Hello Wolrd';
}
}
func new
命令添加新触发器。这将创建一个包含 index.ts 和 function.json 文件的单独文件夹。import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
@Get('hello')
getHelloMessage(): string {
return this.appService.getHelloMessage();
}
}
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
getHelloMessage(): string {
return 'Hello from the second trigger!';
}
}