1

我正在使用 Dart Shelf 包,我需要记录它发送的响应。

我设法记录了请求,但响应技术不太清楚:

final handler = const shelf.Pipeline()
        .addMiddleware(corsHeaders())
        .addMiddleware(shelf.logRequests(
            logger: (message, isError) =>
                _logRequest(message, isError: isError)))
        .addHandler((req) async {
      final res = await Router().call(req);
      return res;
    });

这个问题有两个部分。

  1. 我如何记录标题。
  2. 是否可以记录身体。我知道有一个问题是响应正文只能读取一次。

由于某些响应可能很大,我需要过滤记录正文的请求。

4

1 回答 1

1

答案有点像 Dart-fu。您有一个匿名函数返回一个匿名函数。

var handler = const Pipeline()
    .addMiddleware(
      (handler) => (request) async {
        final response = await handler(request);
        print(response.headers);
        // you could read the body here, but you'd also need to 
        // save the content and pipe it into a new response instance
        return response;
      },
    )
    .addHandler(syncHandler);
于 2022-01-11T20:47:29.667 回答