web服务加入静态资源支持

This commit is contained in:
2026-04-11 10:20:10 +08:00
parent 9735def8a6
commit 8c5aee049d
5 changed files with 50 additions and 6 deletions

View File

@@ -8,6 +8,7 @@ import 'package:dart_jsonwebtoken/dart_jsonwebtoken.dart';
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart';
import 'package:shelf_router/shelf_router.dart';
import 'package:shelf_static/shelf_static.dart';
import 'package:shelf_web_socket/shelf_web_socket.dart';
import 'package:uuid/uuid.dart';
@@ -159,12 +160,18 @@ class ShelfWebServer implements WebServer {
@override
void start(int port,
{Response? Function(Request, Map<String, dynamic>)? interceptor,
Future<TokenResult> Function(String?)? tokenCheck}) async {
Future<TokenResult> Function(String?)? tokenCheck,
StaticInfo? static}) async {
var pipeline = Pipeline()
//生成请求id
.addMiddleware(requestIdMiddleware())
//api日志记录
.addMiddleware(logRequests());
.addMiddleware(logRequests())
.addMiddleware(createMiddleware(responseHandler: (response) {
var headers = {...response.headers, "X-Frame-Options": "ALLOWALL"};
// headers.remove("X-Frame-Options");
return response.change(headers: headers);
}));
//添加自定义拦截器
if (interceptor != null) {
this.interceptor = interceptor;
@@ -172,9 +179,20 @@ class ShelfWebServer implements WebServer {
if (tokenCheck != null) {
this.tokenCheck = tokenCheck;
}
final handler = pipeline.addHandler(_routerHandler);
var handler;
if (static != null) {
var cascadeHandler = Cascade()
.add(_routerHandler)
.add(createStaticHandler(static.path, defaultDocument: static.root))
.handler;
handler = pipeline.addHandler(cascadeHandler);
print("HTTP Server Static File Path: ${static.path}");
}else{
handler = pipeline.addHandler(_routerHandler);
}
_server = await serve(handler, InternetAddress.anyIPv4, port);
print('Server listening on port ${_server?.port}');
print('HTTP Server Listening On Port ${_server?.port}');
}
@override

View File

@@ -7,7 +7,9 @@ class ShelfWebServer implements WebServer {
ShelfWebServer(this.logger);
@override
void start(int port,
{Function? interceptor, Function(String?)? tokenCheck}) async {}
{Function? interceptor,
Function(String?)? tokenCheck,
StaticInfo? static}) async {}
@override
void stop() {}