前言
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 {
@override
Widget build(BuildContext context) {
return Text("Welcome to GetX");
}
}
可以发现,这就是我们非常熟悉的flutter语法
这个后台应用的作用就是访问‘/’则返回请求者文字
返回json的server
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Json({
"fruits": ["banana", "apple", "orange"]
});
}
}
这个写法也十分的flutter
上传图片的接口
class Home extends GetView {
@override
Widget 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,
),