<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ResponseController on PlumePHP</title><link>https://plumephp.com/tags/responsecontroller/</link><description>Recent content in ResponseController on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Thu, 25 May 2023 10:31:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/responsecontroller/index.xml" rel="self" type="application/rss+xml"/><item><title>Go HTTP ResponseController 入门：更明确地控制响应写入</title><link>https://plumephp.com/go-http-response-controller-2023/</link><pubDate>Thu, 25 May 2023 10:31:00 +0800</pubDate><guid>https://plumephp.com/go-http-response-controller-2023/</guid><description>&lt;h2 id="有些响应不是一次写完的"&gt;有些响应不是一次写完的&lt;/h2&gt;
&lt;p&gt;大多数 HTTP handler 都是一次性返回 JSON：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;NewEncoder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;w&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;Encode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;但有些场景需要更细的控制：服务端持续推送日志，下载大文件时分块写入，长任务边执行边返回进度，或者你希望主动 flush 已写内容。Go 的 &lt;code&gt;net/http&lt;/code&gt; 里有 &lt;code&gt;ResponseController&lt;/code&gt;，它把一些响应控制能力以更明确的方式暴露出来。&lt;/p&gt;</description></item></channel></rss>