import 'dart:io';
final HOST = "127.0.0.1"; // eg: localhost final PORT = 8080; //porta final DATA_FILE = "data.json"; // arquivo json
void main() { HttpServer.bind(HOST, PORT).then((server) { server.listen((HttpRequest request) { switch (request.method) { case "GET": handleGet(request); break; case "POST": handlePost(request); break; case "OPTIONS": handleOptions(request); break; default: defaultHandler(request); } }, onError: printError);
print("listando GET e POST de http://$HOST:$PORT");
}, onError: printError); }
void handleGet(HttpRequest req) { HttpResponse res = req.response; print("${req.method}: ${req.uri.path}"); addCorsHeaders(res);
var file = new File(DATA_FILE); if (file.existsSync()) { res.headers.add(HttpHeaders.CONTENT_TYPE, "application/json"); file.readAsBytes().asStream().pipe(res); // fecha o arquivo } else { var err = "Could not find file: $DATA_FILE"; res.addString(err); res.close(); }
}
void handlePost(HttpRequest req) { HttpResponse res = req.response; print("${req.method}: ${req.uri.path}");
addCorsHeaders(res);
req.listen((List buffer) { var file = new File(DATA_FILE); var ioSink = file.openWrite(); // salva dados no arquivo ioSink.add(buffer); ioSink.close();
// retorno
res.add(buffer);
res.close();
}, onError: printError); }
void addCorsHeaders(HttpResponse res) { res.headers.add("Access-Control-Allow-Origin", "*"); res.headers.add("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); res.headers.add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); }
void handleOptions(HttpRequest req) { HttpResponse res = req.response; addCorsHeaders(res); print("${req.method}: ${req.uri.path}"); res.statusCode = HttpStatus.NO_CONTENT; res.close(); }
void defaultHandler(HttpRequest req) { HttpResponse res = req.response; addCorsHeaders(res); res.statusCode = HttpStatus.NOT_FOUND; res.addString("Not found: ${req.method}, ${req.uri.path}"); res.close(); }
void printError(error) => print(error);