dart,shelf_route(磁盘架路径):在'GET'方法中,与使用多参数的请求一起工作的路由名称是什么?

2sbarzqh  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(90)

我的flutter应用使用GET方法将请求发送到此API,并使用queryParameters,如下所示:

Map<String, dynamic> parameters = {'id': null};
parameters.updateAll((key, value) => Uri.encodeComponent(jsonEncode(value)));
String url= 'http://localhost:8080/test;
final Uri uri = Uri.parse(url).replace(queryParameters: parameters);
final http.Response response = await http.get(uri, headers: headers);

发送的URLhttp://localhost:8080/test?id=null
我在服务器端的路由是:

final _route = shelf_router.Router()
  ..get("/test<id>", (Request request, String id) {
    return Response.ok('ok');
  })
  ..all('/<ignored|.*>', (Request request) {
    return Response.notFound('notFound');
  });

但是我从Flutter应用程序发出的请求总是指向all('/<ignored|.*>', (Request request){ ... }路由。我尝试将get("/test<id>", (Request request, String id){ ... }中的路由名称从"/test<id>"更改为"/test<id>""/test?<id>""/test?id<id>""/test?id=<id>",但没有效果。
正确的路由名称是什么?
我想使用带有n个参数的路由(通过使用request.params[ ... ]获得这些参数)。

toe95027

toe950271#

天啊,我错过了这个,就用"/test"吧。
参数为request.url.queryParameters
例如:

..get("/test", (Request request) {
  Map<String, dynamic> parameters = {...request.url.queryParameters};
  parameters.updateAll((key, value) => jsonDecode(Uri.decodeComponent(value)));
  print(parameters); //{id: null}
  return Response.ok('ok');
})

相关问题