支持flutter调用
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import 'dart:io';
|
||||
|
||||
abstract class WebServer {
|
||||
static late WebServer _webServer;
|
||||
|
||||
@@ -24,9 +26,26 @@ enum HttpMethod {
|
||||
;
|
||||
}
|
||||
|
||||
enum HttpResponseType {
|
||||
HTML("text/html; charset=utf-8"),
|
||||
TEXT("text/plain; charset=utf-8"),
|
||||
XML("text/xml; charset=utf-8"),
|
||||
JSON("application/json; charset=utf-8"),
|
||||
BINARY("application/octet-stream"),
|
||||
;
|
||||
|
||||
final String type;
|
||||
|
||||
const HttpResponseType(this.type);
|
||||
}
|
||||
|
||||
class RequestMapping {
|
||||
final HttpMethod method;
|
||||
final String path;
|
||||
final HttpResponseType responseType;
|
||||
|
||||
const RequestMapping({this.method = HttpMethod.ALL, required this.path});
|
||||
const RequestMapping(
|
||||
{this.method = HttpMethod.ALL,
|
||||
required this.path,
|
||||
this.responseType = HttpResponseType.JSON});
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ class ShelfWebServer implements WebServer {
|
||||
// print("method: ${m.reflectee.method} $p");
|
||||
//把地址加入路由
|
||||
|
||||
addRouter(m.reflectee.method, p, (req, [a, b, c, d, e, f]) {
|
||||
addRouter(m.reflectee.method, p, (req, [a, b, c, d, e, f]) async {
|
||||
//从request中获取token并解码传入
|
||||
String? token = req.headers["token"];
|
||||
dynamic payload;
|
||||
@@ -205,7 +205,19 @@ class ShelfWebServer implements WebServer {
|
||||
} else {
|
||||
args = [req];
|
||||
}
|
||||
return im.invoke(v.simpleName, args).reflectee;
|
||||
Response response = await im.invoke(v.simpleName, args).reflectee as Response;
|
||||
//判断contenttype是否定义
|
||||
var t = response.headers["content-type"];
|
||||
|
||||
if (t == null) {
|
||||
//设置默认contenttype
|
||||
response = response.change(headers: {
|
||||
...response.headers,
|
||||
"content-type": m.reflectee.responseType.type
|
||||
});
|
||||
}
|
||||
|
||||
return response;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
33
lib/base/webserver/impl/ShelfWebServer_none.dart
Normal file
33
lib/base/webserver/impl/ShelfWebServer_none.dart
Normal file
@@ -0,0 +1,33 @@
|
||||
import 'package:EasyDartModule/base/logger/Logger.dart';
|
||||
import 'package:EasyDartModule/base/webserver/WebServer.dart';
|
||||
|
||||
class ShelfWebServer implements WebServer {
|
||||
late Logger logger;
|
||||
final String tag = "webserver";
|
||||
ShelfWebServer(this.logger);
|
||||
@override
|
||||
void start(int port) async {}
|
||||
|
||||
@override
|
||||
void stop() {}
|
||||
|
||||
@override
|
||||
void addHandler(handler) {}
|
||||
|
||||
void addRouter(HttpMethod method, String path, dynamic handler) {}
|
||||
}
|
||||
|
||||
abstract class WebSocketHandler {
|
||||
Map<String, dynamic> chanelMap = {};
|
||||
void open(String id);
|
||||
void close(String id);
|
||||
void message(String id, dynamic message);
|
||||
|
||||
void sendData(String id, dynamic data) {
|
||||
if (chanelMap.containsKey(id)) {
|
||||
chanelMap[id].sink.add(data);
|
||||
} else {
|
||||
print("id未找到");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user