<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>poseidon-http-client</title><link>https://lodgvideon.github.io/poseidon-http-client/es/</link><description>Recent content on poseidon-http-client</description><generator>Hugo</generator><language>es</language><atom:link href="https://lodgvideon.github.io/poseidon-http-client/es/index.xml" rel="self" type="application/rss+xml"/><item><title>Primeros pasos</title><link>https://lodgvideon.github.io/poseidon-http-client/es/docs/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lodgvideon.github.io/poseidon-http-client/es/docs/getting-started/</guid><description>&lt;h1 id="primeros-pasos"&gt;Primeros pasos&lt;a class="anchor" href="#primeros-pasos"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;poseidon-http-client es un cliente HTTP de bajo nivel para Go. Implementa HTTP/1.1, HTTP/2 y HTTP/3 desde cero — con su propio framing, HPACK, QPACK y stack QUIC — sin &lt;code&gt;net/http&lt;/code&gt; y sin bibliotecas de protocolo de terceros. Está pensado para generadores de carga y herramientas que necesitan control directo sobre conexiones, streams y control de flujo.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;a class="anchor" href="#instalaci%c3%b3n"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Requiere Go 1.25 o superior.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;go get github.com/lodgvideon/poseidon-http-client&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="el-modelo-de-peticiones"&gt;El modelo de peticiones&lt;a class="anchor" href="#el-modelo-de-peticiones"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Las tres versiones del protocolo comparten la misma API. Se construye un cliente con un constructor y después se llama a &lt;code&gt;Do&lt;/code&gt; con un contexto, una petición y un &lt;code&gt;*client.Response&lt;/code&gt; que es propiedad del llamador:&lt;/p&gt;</description></item><item><title>HTTP/1.1</title><link>https://lodgvideon.github.io/poseidon-http-client/es/docs/http1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lodgvideon.github.io/poseidon-http-client/es/docs/http1/</guid><description>&lt;h1 id="http11"&gt;HTTP/1.1&lt;a class="anchor" href="#http11"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use HTTP/1.1 cuando el servidor de destino no hable HTTP/2, o cuando
quiera probar específicamente su ruta HTTP/1.1 y necesite impedir que
la negociación ALPN promueva la conexión a h2.&lt;/p&gt;
&lt;p&gt;HTTP/1.1 tiene el mismo conjunto de constructores que HTTP/2 y HTTP/3:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Constructor&lt;/th&gt;
					&lt;th&gt;Transporte&lt;/th&gt;
					&lt;th&gt;Forma&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;NewH1Client(addr, dialer, opts...)&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;TransportH1SingleConn&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Una conexión, reconexión automática. Las peticiones se serializan.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;NewH1PoolClient(addr, dialer, pool, opts...)&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;TransportH1Pool&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Hasta &lt;code&gt;MaxConnsPerHost&lt;/code&gt; conexiones. Ese número es la concurrencia de peticiones.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;NewManagedH1Client(resolver, dialer, opts...)&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;TransportH1Managed&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Descubrimiento de servicios con Resolver + Selector; un sub-pool HTTP/1.1 por dirección reparte la carga.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="forzar-http11"&gt;Forzar HTTP/1.1&lt;a class="anchor" href="#forzar-http11"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dos cosas fijan el protocolo:&lt;/p&gt;</description></item><item><title>HTTP/2</title><link>https://lodgvideon.github.io/poseidon-http-client/es/docs/http2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lodgvideon.github.io/poseidon-http-client/es/docs/http2/</guid><description>&lt;h1 id="http2"&gt;HTTP/2&lt;a class="anchor" href="#http2"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;El cliente HTTP/2 implementa RFC 7540 y HPACK (RFC 7541) desde cero — sin &lt;code&gt;net/http&lt;/code&gt;, sin &lt;code&gt;golang.org/x/net/http2&lt;/code&gt;. Tres constructores cubren las topologías habituales: una sola conexión, un pool por host, o un conjunto de backends gobernado por un resolver. Los tres devuelven un &lt;code&gt;*client.Client&lt;/code&gt; con la misma API &lt;code&gt;Do&lt;/code&gt; / &lt;code&gt;DoStream&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="conexión-única"&gt;Conexión única&lt;a class="anchor" href="#conexi%c3%b3n-%c3%banica"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;client.NewSingleConnClient&lt;/code&gt; mantiene una conexión y vuelve a marcar automáticamente cuando se cae. Este es &lt;code&gt;examples/http2/main.go&lt;/code&gt;:&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="c1"&gt;// Command http2-example issues a single HTTP/2 GET with the poseidon client.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// TransportSingleConn (the default) negotiates h2 over TLS and reuses one&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// connection with automatic redial.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;//	go run ./examples/http2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;context&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;crypto/tls&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;log&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;time&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;github.com/lodgvideon/poseidon-http-client/client&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;github.com/lodgvideon/poseidon-http-client/conn&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;NewSingleConnClient&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;www.cloudflare.com:443&amp;#34;&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TLSDialer&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;Config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;tls&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Config&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;			&lt;/span&gt;&lt;span class="nx"&gt;ServerName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;www.cloudflare.com&amp;#34;&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;			&lt;/span&gt;&lt;span class="nx"&gt;NextProtos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;h2&amp;#34;&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Fatalf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;build client: %v&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;defer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;_&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cancel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WithTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Background&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Second&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;defer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;cancel&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="c1"&gt;// Response is caller-owned and reusable; Reset() clears it between requests.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;client&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Do&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GET&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;/&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Fatalf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;GET /: %v&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;HTTP/2 %d — %d bytes\n&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Body&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;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Response&lt;/code&gt; pertenece al llamador: asígnalo una vez y llama a &lt;code&gt;resp.Reset()&lt;/code&gt; entre peticiones. &lt;code&gt;client.GET(path)&lt;/code&gt; es una forma abreviada; construye un &lt;code&gt;client.Request{Method, Scheme, Authority, Path, BodyMode}&lt;/code&gt; directamente para tener control total.&lt;/p&gt;</description></item><item><title>HTTP/3</title><link>https://lodgvideon.github.io/poseidon-http-client/es/docs/http3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lodgvideon.github.io/poseidon-http-client/es/docs/http3/</guid><description>&lt;h1 id="http3"&gt;HTTP/3&lt;a class="anchor" href="#http3"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;El cliente HTTP/3 (RFC 9114) funciona sobre una pila QUIC (RFC 9000/9001/9002) y un códec QPACK (RFC 9204) implementados en este repositorio — sin &lt;code&gt;quic-go&lt;/code&gt;, sin cgo. Solo el handshake TLS 1.3 en sí proviene de la biblioteca estándar &lt;code&gt;crypto/tls&lt;/code&gt;; la protección de paquetes, la recuperación de pérdidas, el control de congestión y el control de flujo son código de poseidon.&lt;/p&gt;
&lt;p&gt;La API de peticiones es el mismo &lt;code&gt;Do&lt;/code&gt; / &lt;code&gt;DoStream&lt;/code&gt; que se usa con HTTP/2. Un &lt;code&gt;client.Request&lt;/code&gt; y un &lt;code&gt;client.Response&lt;/code&gt; no cambian entre transportes; pasar una prueba de carga de H2 a H3 es solo cambiar el constructor.&lt;/p&gt;</description></item><item><title>Características y ventajas</title><link>https://lodgvideon.github.io/poseidon-http-client/es/docs/features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lodgvideon.github.io/poseidon-http-client/es/docs/features/</guid><description>&lt;h1 id="características-y-ventajas"&gt;Características y ventajas&lt;a class="anchor" href="#caracter%c3%adsticas-y-ventajas"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="matriz-de-soporte"&gt;Matriz de soporte&lt;a class="anchor" href="#matriz-de-soporte"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Las tres versiones del protocolo comparten la misma API de peticiones: &lt;code&gt;client.Do&lt;/code&gt; / &lt;code&gt;client.DoStream&lt;/code&gt; con un &lt;code&gt;client.Response&lt;/code&gt; reutilizable, propiedad del llamador. La compresión también es compartida: las respuestas se decodifican para gzip, deflate, br y zstd (el cliente anuncia &lt;code&gt;accept-encoding: gzip, deflate, br, zstd&lt;/code&gt;), y &lt;code&gt;Request.CompressBody&lt;/code&gt; comprime los cuerpos de las peticiones — véase &lt;a href="#compresi%c3%b3n"&gt;Compresión&lt;/a&gt; más abajo. Lo que varía es cuánto del protocolo expone cada transporte.&lt;/p&gt;</description></item><item><title>Aviso legal</title><link>https://lodgvideon.github.io/poseidon-http-client/es/docs/disclaimer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lodgvideon.github.io/poseidon-http-client/es/docs/disclaimer/</guid><description>&lt;h1 id="aviso-legal"&gt;Aviso legal&lt;a class="anchor" href="#aviso-legal"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;poseidon-http-client es software joven. Esta es su primera versión. Lea esta página antes de depender de él.&lt;/p&gt;
&lt;h2 id="sin-garantía"&gt;Sin garantía&lt;a class="anchor" href="#sin-garant%c3%ada"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;La biblioteca se distribuye bajo licencia MIT y se proporciona &lt;strong&gt;tal cual&lt;/strong&gt;, sin garantía de ningún tipo. La usa bajo su propio riesgo. Consulte el archivo &lt;a href="https://github.com/lodgvideon/poseidon-http-client/blob/main/LICENSE"&gt;LICENSE&lt;/a&gt; para los términos exactos.&lt;/p&gt;
&lt;h2 id="código-sensible-a-la-seguridad-sin-auditoría-externa"&gt;Código sensible a la seguridad, sin auditoría externa&lt;a class="anchor" href="#c%c3%b3digo-sensible-a-la-seguridad-sin-auditor%c3%ada-externa"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Esta biblioteca implementa desde cero protocolos sensibles a la seguridad: el transporte QUIC (RFC 9000/9001/9002), la protección de registros TLS 1.3 para QUIC, HPACK (RFC 7541) y QPACK (RFC 9204). No reutiliza &lt;code&gt;net/http&lt;/code&gt;, &lt;code&gt;quic-go&lt;/code&gt; ni ninguna otra implementación de protocolo consolidada en estas rutas.&lt;/p&gt;</description></item></channel></rss>