如何重定向 Dart/shelf 中的请求?
How to redirect a request in Dart/shelf?
我在 Dart 中使用 shelf
来设置一个简单的网络服务器。如何在下面的示例中将请求从 /
重定向到 /oauth2callback
?
我找到了 this method,但不知为何我无法编译代码,即使我导入了 dart:io
。
import 'dart:io';
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart';
import 'package:shelf_router/shelf_router.dart';
final router = Router()
..get('/', rootHandler)
..get('/oauth2callback', oauth2callback);
Response rootHandler(Request req) {
return Response.ok('Hello, World!\n');
}
Response oauth2callback(Request request) {
return Response.ok('Redirected!\n');
}
void main(List<String> args) async {
final _handler = Pipeline().addMiddleware(logRequests()).addHandler(router);
final server = await serve(_handler, '0.0.0.0', 8080);
print('Server listening on port ${server.port}');
}
您可以像这样发送 302 响应:
Response rootHandler(Request request) {
Map<String,String> headers = {'location':'/oauth2callback'};
return Response(302,headers:headers);
});
您可以使用标准的 Self 方法:
return Response.movedPermanently(newUrl); // generates 301
或
return Response.found(newUrl); // generates 302
我在 Dart 中使用 shelf
来设置一个简单的网络服务器。如何在下面的示例中将请求从 /
重定向到 /oauth2callback
?
我找到了 this method,但不知为何我无法编译代码,即使我导入了 dart:io
。
import 'dart:io';
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart';
import 'package:shelf_router/shelf_router.dart';
final router = Router()
..get('/', rootHandler)
..get('/oauth2callback', oauth2callback);
Response rootHandler(Request req) {
return Response.ok('Hello, World!\n');
}
Response oauth2callback(Request request) {
return Response.ok('Redirected!\n');
}
void main(List<String> args) async {
final _handler = Pipeline().addMiddleware(logRequests()).addHandler(router);
final server = await serve(_handler, '0.0.0.0', 8080);
print('Server listening on port ${server.port}');
}
您可以像这样发送 302 响应:
Response rootHandler(Request request) {
Map<String,String> headers = {'location':'/oauth2callback'};
return Response(302,headers:headers);
});
您可以使用标准的 Self 方法:
return Response.movedPermanently(newUrl); // generates 301
或
return Response.found(newUrl); // generates 302