예. 요청에 전송 된 데이터의 정확한 크기가 확실하지는 않지만 POST 또는 다른 방법을 통해 전송되는 데이터에 액세스하기 전에 스트림을 완전히 유출해야 할 때가있을 수 있습니다. (http 요청의 본문에 대해). 다트 자습서의 Creating a server 섹션을 참조하십시오. 특히 스트림이 Handling POST requests에 어떻게 유출되었는지 확인할 수 있습니다.
var buff = [];
req.listen(buff.addAll,
onDone:() {
print('Received: ${String.fromCharCodes(buff)}');
});
이 HttpRequest class documentation에 대한 자세한 정보를 참조하십시오 : 다음과 같이 일반적으로 오히려 예와 같이 조각을 다시 작성하는 것보다, 그들은 버퍼에 직접 추가됩니다.
http_server package을 사용하면 자동으로 스트림이 비워지고 요청과 함께 전달 된 헤더에 따라 데이터로드를 적절히 처리합니다. 스트림 트랜스 포머를 들어오는 HttpRequests 스트림에 적용하여 HttpRequestBody로 변환함으로써이를 수행합니다. 아래 예제를 참조하십시오. 자세한 내용은 HttpBodyHandler API을 참조하십시오.
HttpServer.bind(...).then((server) {
server.transform(new HttpBodyHandler())
.listen((HttpRequestBody body) {
// each request is now an HttpRequestBody
// which has already drained the stream
print(body.type);
print(body.body);
body.request.response..statusCode = HttpStatus.OK
..writeln('Got it!')
..close();
});
});