我对Dart函数框架很陌生。我的目标是使用这个包创建多个函数,并将它们部署到云运行(与Firebase相结合,但我想这与这个问题无关)。
我已经运行了快速启动,并阅读了文档中的所有内容。
快速启动一次只提到一个函数(例如Hello World、Cloud Events等),如下所示:
import 'package:functions_framework/functions_framework.dart';
import 'package:shelf/shelf.dart';
@CloudFunction()
Response function(Request request) {
return Response.ok('Hello, World!');
}但是,正如您在快速启动中所看到的,一次只处理一个项目中的一个函数。我想要部署几个功能怎么样?我是否应该:
或
functions_framework?让我说得更具体些。我是否应该这样做(选项1-这对我来说更有意义):
import 'dart:math';
import 'package:functions_framework/functions_framework.dart';
import 'package:shelf/shelf.dart';
@CloudFunction()
Response function(Request request) {
return Response.ok('Hello, World!');
}
@CloudFunction()
Response function2(Request request) {
if (Random().nextBool()) {
return Response.ok('Hello, World!');
} else {
return Response.internalServerError();
}
}还是应该为项目中所需的每个函数运行一个build_runner来构建一个不同的文件夹?
是否有区别和/或最佳做法?提前谢谢。
编辑。这个问题与云运行本身的部署有关,而不仅仅是在我自己的PC上进行测试。为了测试我自己的函数,我执行了以下操作:
dart run build_runner build,以便它正确地更新server.dart文件(我可以看到框架在幕后做了很多事情,_nameToFunctionTarget基本上是一个路由器);dart run bin/server.dart --port MYPORT --target MYFUNCTION ( MYPORT和MYFUNCTION分别为8080/8081或function/function2 )。我想我只是搞不懂如何正确管理这个框架,一旦部署到云运行上。
编辑2. --我刚刚放弃使用Dart作为无服务器语言,甚至是后端语言。即使是基本的东西,也有太多的行话。任何后端框架要么是死的,要么是由一个狂热的家伙维护的(道具给他!)这种语言还没有从Google团队/社区中得到足够的喜爱,在这个时候,基本上不可能在仅仅是Dart上进行完全的叠加。这是个梦,但现在不可能实现。此外,Dart几乎没有一个合适的SDK来使用Firestore等等,因此Firebase不是一个选项。我发现学习NodeJS和利用用NodeJS编写的Firebase函数的Firebase支持就更容易了,如果将来会有更多的支持的话,我会在那里等待更多的支持。
发布于 2021-12-29 23:13:00
文档现在有点稀疏(而且我也是新手!)我找不到任何好的例子,所以这里……)
dartfn generate cloudevent)Router(),以便代码中的特定逻辑处理单个入口点(函数)。休息的例子
shelf_router: ^1.1.2@CloudFunction使用Router()functions.dart
import 'package:functions_framework/functions_framework.dart';
import 'package:shelf/shelf.dart';
import 'package:shelf_router/shelf_router.dart';
Router app = Router()
..get('/health', (Request request) {
return Response.ok('healthy');
})
..get('/user/<user>', (Request request, String user) {
// fetch the user... (probably return as json)
return Response.ok('hello $user');
})
..post('/user', (Request request) {
// convert request body to json and persist... (probably return as json)
return Response.ok('saved the user');
});
@CloudFunction()
Future<Response> function(Request request) => app.call(request);https://stackoverflow.com/questions/68981552
复制相似问题