如何记录飞镖货架请求的响应
How to log the response for a dart shelf request
我正在使用 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;
});
问题分为两个部分。
- 如何记录 headers。
- 是否可以记录 body。
我知道有一个问题是响应 body 只能读取一次。
由于某些响应可能很大,我需要过滤记录了 body 的请求。
答案有点飞镖。您有一个返回匿名函数的匿名函数。
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);
我正在使用 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;
});
问题分为两个部分。
- 如何记录 headers。
- 是否可以记录 body。 我知道有一个问题是响应 body 只能读取一次。
由于某些响应可能很大,我需要过滤记录了 body 的请求。
答案有点飞镖。您有一个返回匿名函数的匿名函数。
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);