Skip to content

Commit 64d0d86

Browse files
committed
fix(docs): stream native API responses without buffering
1 parent 75cb5cb commit 64d0d86

2 files changed

Lines changed: 10 additions & 10 deletions

File tree

‎apps/docs/lib/content/request-samples.ts‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ interface RequestInput {
88

99
const quote = (value: string) => JSON.stringify(value)
1010

11-
/** Native HTTP examples preserve request bytes and leave binary responses intact. */
11+
/** Native HTTP examples preserve request bytes and copy response bytes as they arrive. */
1212
export function nativeRequestSamples({ method, url, headers, body, fields }: RequestInput) {
1313
const goImports = ['io', 'net/http', 'os']
1414
const goBody: string[] = []
@@ -100,8 +100,7 @@ ${goHeaders.map((line) => ` ${line}`).join('\n')}
100100
response := must(http.DefaultClient.Do(request))
101101
defer response.Body.Close()
102102
if response.StatusCode >= 400 { panic(response.Status) }
103-
result := must(io.ReadAll(response.Body))
104-
must(os.Stdout.Write(result))
103+
must(io.Copy(os.Stdout, response.Body))
105104
}`,
106105
},
107106
{
@@ -117,9 +116,11 @@ public class Example {
117116
var builder = HttpRequest.newBuilder(URI.create(${quote(url)}));
118117
${[...javaHeaders, ...javaBody].map((line) => ` ${line}`).join('\n')}
119118
var request = builder.method(${quote(method)}, ${javaPayload}).build();
120-
var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofByteArray());
121-
if (response.statusCode() >= 400) throw new IllegalStateException("HTTP " + response.statusCode());
122-
System.out.write(response.body());
119+
var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofInputStream());
120+
try (var body = response.body()) {
121+
if (response.statusCode() >= 400) throw new IllegalStateException("HTTP " + response.statusCode());
122+
body.transferTo(System.out);
123+
}
123124
}
124125
}`,
125126
},
@@ -134,10 +135,9 @@ using System.Text;
134135
using var client = new HttpClient();
135136
using var request = new HttpRequestMessage(new HttpMethod(${quote(method)}), ${quote(url)});
136137
${[...csharpBody, ...csharpHeaders].join('\n')}
137-
using var response = await client.SendAsync(request);
138+
using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
138139
response.EnsureSuccessStatusCode();
139-
var result = await response.Content.ReadAsByteArrayAsync();
140-
await Console.OpenStandardOutput().WriteAsync(result);`,
140+
await response.Content.CopyToAsync(Console.OpenStandardOutput());`,
141141
},
142142
]
143143
}

‎apps/docs/scripts/verify-api-samples.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ try {
257257
(language === 'go' || language === 'java' || language === 'csharp')
258258
) {
259259
await check(`${scenario.name}: ${language} live response bytes`, async () => {
260-
const runtimeFolder = join(folder, 'runtime')
260+
const runtimeFolder = join(directory, scenario.name, `${language}-runtime`)
261261
await mkdir(runtimeFolder, { recursive: true })
262262
const runtimeFile = join(runtimeFolder, filename)
263263
await writeFile(

0 commit comments

Comments
 (0)