前言
Flutter是谷歌推出的一款跨平台开发框架,现在属于此领域star最多的框架,其被广泛应用于构建前台界面,但或许很少人知道,他也可以写后端应用。
本文主角
flutter非常著名的getx库推出的get server
jonataslaw/get_server: A backend server that makes it possible to program with Flutter syntax and reuse existing code (github.com)
基本功能
返回字符串的基础server
void main() {runApp(GetServerApp(getPages: [GetPage(name: '/', page:()=> Home()),],));
}class Home extends StatelessWidget {@overrideWidget build(BuildContext context) {return Text("Welcome to GetX");}
}
可以发现,这就是我们非常熟悉的flutter语法
这个后台应用的作用就是访问‘/’则返回请求者文字
返回json的server
class Home extends StatelessWidget {@overrideWidget build(BuildContext context) {return Json({"fruits": ["banana", "apple", "orange"]});}
}
这个写法也十分的flutter
上传图片的接口
class Home extends GetView {@overrideWidget build(BuildContext context) {return MultiPartWidget(builder: (context, upload) {return Json({"nameFile": upload.name,"mimeType": upload.mimeType,"fileBase64": "${base64Encode(upload.data)}",});},);}
}
亮点
返回我们写好的flutter页面
在官方中提到
中文即为
您只需从 Flutter 项目中复制 Web 文件夹,然后粘贴到服务器文件中的目录即可。 Flutter web 生成一个 html 文件,该 html 文件调用一个 js 文件,该文件又请求几个必须位于公共文件夹中的文件。 要将 Flutter Web 文件夹设为公共文件夹,只需将其添加到您的 GetServer 中即可。 这样,当您进入服务器时,您将自动定向到使用 Flutter 制作的站点。
void main() {runApp(GetServerApp(home: FolderWidget('web'),getPages: [GetPage(name: '/api', page: () => ApiPage()),],),);
}
JWT鉴权
void main() {runApp(GetServerApp(jwtKey: 'your key here',),);
}final claimSet = JwtClaim(expiry: DateTime.now().add(Duration(days: 3)),issuer: 'get is awesome',issuedAt: DateTime.now(),
);var token = TokenUtil.generateToken(claim: claimSet);GetPage(name: '/awesome-route',method: Method.get,page: () => YourPage(),needAuth: true,
),