summer 0.6.3 copy "summer: ^0.6.3" to clipboard
summer: ^0.6.3 copied to clipboard

Powerful Server Framework behind Spring

Summer #

优雅而强大的Dart Web框架。借鉴了Express.js等开源库,使用Dart语言编写,支持路由管理,中间件,静态文件托管,以及各种常用的功能。

简单的例子 #

import 'package:summer/summer.dart';

void main(List<String> arguments) {
  var app = createApp();
  app.get('/test', [
    (req, res, next) {
      return 'test finished';
    }
  ]);
  app.listen(httpPort: 4000);
}

createApp()创建应用实例
app.get定义一个get请求,'/test'为路径,后面的回调函数负责执行业务逻辑.
app.listen(httpPort: 4000);启动服务器并监听4000端口.

中间件 #

import 'package:summer/summer.dart';

void main(List<String> arguments) {
  var app = createApp();
  var corsOptions = {'origin': 'http://localhost:4200'};
  app.use(fns: [cors(corsOptions)]);
  app.get('/test', [
    (req, res, next) {
      print('test');
    }
  ]);
  app.listen(httpPort: 4000);
}

以cors中间件为例,cors()会返回函数,使用app.use(fns: [cors(corsOptions)])就可将中间件注册.

路由管理器 #

import 'package:summer/summer.dart';

void main(List<String> arguments) {
  var app = createApp();
  var router = httpRouter();
  router.get('/test', [
    (req, res, next) {
      return 'test';
    }
  ]);
  app.useHttpRouter(path: '/index', router: router);
  app.listen(httpPort: 4000);
}

创建路由管理器,并使用app.useHttpRouter将路由管理器注册进应用,访问接口的路径为/index/test

文件系统 #

import 'package:summer/summer.dart';

void main(List<String> arguments) {
  var app = createApp();
  app.use(fns: [fileDB('files')]);
  app.listen(httpPort: 4000);
}

引入fileDB中间件,输入"http://localhost:4000"即可访问files文件夹.

静态资源服务 #

import 'package:summer/summer.dart';

void main(List<String> arguments) {
  var app = createApp();
  app.use(fns: [serveStatic('htmls')]);
  app.listen(httpPort: 4000);
}

引入serveStatic中间件,输入"http://localhost:4000"即可访问htmls文件夹下的静态资源.

下载 #

import 'package:summer/summer.dart';

void main(List<String> arguments) {
  var app = createApp();
  app.get('/download', [
    (req, res, next) async {
      await res.downloadFile('files/file.txt');
    }
  ]);
  app.listen(httpPort: 4000);
}

调用res.downloadFile('files/file.txt');前端会下载该文件.

API: http请求

import 'package:summer/summer.dart';

var app = createApp();
app.get('/path', [(req, res, next) => next.complete(), (req, res, next) => 'test']);
app.listen(httpPort: 4000);

引入summer包后,需要调用createApp创建应用,然后可以调用app.get(http方法),输入路径以及回调函数. 回调函数中的next类似于express的next,只不过summer是调用next.complete()来继续执行函数的. 最后调用app.listen开启服务器.

支持websocket #

import 'package:summer/summer.dart';

void main(List<String> arguments) {
  var app = createApp();
  app.ws('webSocket', [
    (req, ws, next) {
      ws.listen((event) {
        print(event);
      });
    }
  ]);
  app.listen(httpPort: 4000);
}

tcp,udp #

import 'dart:io';

import 'package:summer/summer.dart';

void main(List<String> arguments) {
  var app = createApp();
  app.tcp((socket, next) {
    socket.listen((event) {
      print(event);
    });
  });
  app.udp((socket, next) {
    socket.listen((event) {
      if (event == RawSocketEvent.read) {
        var data = socket.receive();
        if (data != null) {
          print(data.data);
        }
      }
    });
  });
  app.listen(tcpPort: 4000, udpPort: 5000);
}
app.use(path: '/', fns:[...]);

app.use用来注册中间件,传递一个Handler函数数组,目前仅支持HttpHandler.path为可选值,符合该路径才调用.

1
likes
0
points
27
downloads

Publisher

verified publisherabandoft.com

Weekly Downloads

Powerful Server Framework behind Spring

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

mime_type, path, path_to_regexp

More

Packages that depend on summer