<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="325915" data-post-id="325915">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="taro" data-post="10" data-topic="63075">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/taro/48/40864_2.png" class="avatar"> taro:</div>
<blockquote>
<p>I see, could you briefly share what’s wrong with them?</p>
</blockquote>
</aside>
<p>Admittedly nothing, I only vaguely remembered potential problems with consolidation which just made me conclude “well, I’ll never use them if I can help it”.</p>
<p>And syntactically they are confusing to me – of course that’s subjective and is not a strong argument at all, I just don’t see how <code>defmodule</code> + a function or two and then <code>defimpl</code> embedded inside the module is intuitive or even indicative of anything. But again, syntax preferences of others aren’t something you should consider a strong signal when deciding on how to write your library. Probably only if you agree with them.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="325915" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-325915" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="325915"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #11"></div>
  </section>
</div>
    <div class="postbit" id="325919" data-post-id="325919">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="ityonemo" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/ityonemo/120/11341_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  ityonemo
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Heh, if you hate defimpls:</p>
<p><a href="https://github.com/ityonemo/protoss" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/ityonemo/protoss</a></p>
<p>(Disclaimer, self-plug)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="325919" data-batch-url="/posts/batch_likers">
                        7
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-325919" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="325919"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #12"></div>
  </section>
</div>
    <div class="postbit" id="325920" data-post-id="325920">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="taro" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/taro/120/40864_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  taro
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="dimitarvp" data-post="12" data-topic="63075">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/48/38664_2.png" class="avatar"> dimitarvp:</div>
<blockquote>
<p>I just don’t view how <code>defmodule</code> + a function or two and then <code>defimpl</code> embedded inside the module is intuitive or even indicative of anything.</p>
</blockquote>
</aside>
<p>Absolutely. They are only tools for the users to cope with the incompleteness of the library. So the maintainer can gradually follow up what users’ needs without obstructing the possibility of them. They are meant to be removed as soon as possible. Let’s take the ugliness as an indication of that.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="325920" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-325920" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="325920"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #13"></div>
  </section>
</div>
    <div class="postbit" id="325975" data-post-id="325975">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="al2o3cr" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/120/3457_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  al2o3cr
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Some initial reactions, in no particular order:</p>
<ul>
<li>
<p>the path-parsing <a href="https://github.com/taronull/mar/blob/e197ff01acae4f428c7b8190f4e2b7f6a62223a3/lib/mar/router.ex#L65-L70" rel="nofollow">captures <code>\w+</code> for path parameters</a> but that means that a path like the one to <strong>this very page</strong> (<code>/t/mar-simple-web-in-elixir/63075</code>) can’t capture <code>mar-simple-web-in-elixir</code> as a single parameter</p>
</li>
<li>
<p>there doesn’t seem to be a way to read request headers (other than digging them out of <code>route.conn.headers</code> in a <code>before_action</code> and putting them… ???). How would a user of <code>Mar</code> implement something like Basic auth, or use session cookies?</p>
</li>
<li>
<p>“one function per method” means the “standard” REST routing has to split into many modules:</p>
<ul>
<li>one like <code>MyApp</code> above that supports show / update / delete</li>
<li>one for actions that don’t have an <code>:id</code> - <code>GET /post</code> (index), <code>POST /post</code> (create)</li>
<li>one for <code>GET /post/new</code>, the new post form</li>
<li>one for <code>GET /post/:id/edit</code>, the update post form</li>
</ul>
</li>
<li>
<p>one thing new devs frequently struggle with when setting up the above is route priority - if there’s a route for <code>GET /post/:id</code> listed before <code>GET /post/new</code>, then the new action won’t ever get routed to. The ordering in <code>Mar.Routes.route</code> <a href="https://github.com/taronull/mar/blob/e197ff01acae4f428c7b8190f4e2b7f6a62223a3/lib/mar/router.ex#L25-L39" rel="nofollow">isn’t customizable</a>, so what happens if that ordering is wrong? The check for “length of leading hard matches” should help, but it won’t apply to more-complicated paths like <code>/post/:id/comments/new</code>.</p>
</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="325975" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-325975" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="325975"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #14"></div>
  </section>
</div>
    <div class="postbit" id="325980" data-post-id="325980">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="taro" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/taro/120/40864_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  taro
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks you so much for the feedback!<br>
I’m grateful that you cared to try it out and take a look into code.</p>
<aside class="quote no-group" data-username="al2o3cr" data-post="15" data-topic="63075">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/48/3457_2.png" class="avatar"> al2o3cr:</div>
<blockquote>
<p>can’t capture <code>mar-simple-web-in-elixir</code> as a single parameter</p>
</blockquote>
</aside>
<p>What a basic mistake! I tested poorly. I’ll fix this right away.</p>
<aside class="quote no-group" data-username="al2o3cr" data-post="15" data-topic="63075">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/48/3457_2.png" class="avatar"> al2o3cr:</div>
<blockquote>
<p>there doesn’t seem to be a way to read request headers</p>
</blockquote>
</aside>
<p>Headers and cookies were indeed out of scope for this demo, I thought I would wrap up with path, params and response this time. I’ll find a way to incorporate them in the design later.</p>
<aside class="quote no-group" data-username="al2o3cr" data-post="15" data-topic="63075">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/48/3457_2.png" class="avatar"> al2o3cr:</div>
<blockquote>
<p>one function per method” means the “standard” REST routing has to split into many modules:</p>
</blockquote>
</aside>
<p>True, I thought I would find a way to incorporate them in one or two routes in the future. Would that be possible?</p>
<aside class="quote no-group" data-username="al2o3cr" data-post="15" data-topic="63075">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/al2o3cr/48/3457_2.png" class="avatar"> al2o3cr:</div>
<blockquote>
<p>The check for “length of leading hard matches” should help, but it won’t apply to more-complicated paths</p>
</blockquote>
</aside>
<p>I think I implemented the path priority for more and earlier hard matches. That took the most of my time <img src="https://forum.elixirforum.com/images/emoji/apple/sob.png?v=15" title=":sob:" class="emoji" alt=":sob:" loading="lazy" width="20" height="20"> is it not working as expected?</p>
<p>Thanks again for the kind feedback!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="325980" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-325980" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="325980"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #15"></div>
  </section>
</div>
    <div class="postbit" id="325996" data-post-id="325996">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="josevalim" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/120/1787_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  josevalim
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Elixir</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="taro" data-post="5" data-topic="63075">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/taro/48/40864_2.png" class="avatar"> taro:</div>
<blockquote>
<p>Do you think this approach has a chance if the least LoC is not the goal?</p>
</blockquote>
</aside>
<p>I didn’t mean smaller on the LoC size, I meant smaller on the conceptual/ergonomic side. The simplest abstraction in Elixir are functions. Asking the user to define modules per path or to customize routes is, in my opinion, pointing them towards the wrong (larger) abstraction. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="325996" data-batch-url="/posts/batch_likers">
                        8
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-325996" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="325996"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #16"></div>
  </section>
</div>
    <div class="postbit" id="326002" data-post-id="326002">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="taro" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/taro/120/40864_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  taro
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I see. I’ll keep that in mind.<br>
Thanks for the kind advice!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="326002" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-326002" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="326002"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #17"></div>
  </section>
</div>
    <div class="postbit" id="326215" data-post-id="326215">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="LTheGreats" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/LTheGreats/120/5884_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  LTheGreats
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yeah, I think it could be expressed using macros that decorate individual functions, similar to what the <code>attr</code> macro does for a component in phoenix. I’m sort of thinking something like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyApp do
  use Mar # require and import the macros

  get path: "/some/url" # get request macro
  before &amp;MyApp.Blah.some_before_function/1 # optional macros that serve the same purpose the the Mar.Route protocol did
  after &amp;MyApp.Blah.some_after_function/1
  def function_name_of_my_choice(_params) do
    """
    &lt;!-- Some sort of html --&gt;
    """
  end
end
</code></pre>
<p>I’m kind of leaning towards having a different macro for each of the different kinds of http requests versus a single response macros. Also, it could be useful for being able to couple different path requests within a single module, like if you were using htmx or something along those lines.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="326215" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-326215" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="326215"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #18"></div>
  </section>
</div>
    <div class="postbit" id="326225" data-post-id="326225">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="acalejos" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/acalejos/120/30642_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  acalejos
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I just also wanted to chime in with some encouragement here. I think it’s a worthwhile effort, and I think your intuition is correct in that if you find it necessary then others would probably like it as well.</p>
<p>I’ve seen the likes of <a class="mention" href="/u/wojtekmach" rel="nofollow">@wojtekmach</a> get peppered with dissent about his Req library with questions like “why do we need another HTTP client?”, and now it’s becoming the defacto HTTP client and the only one I use.</p>
<p>Just food for though. Good luck going forward!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="326225" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-326225" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="326225"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #19"></div>
  </section>
</div>
    <div class="postbit" id="326232" data-post-id="326232">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="gregvaughn" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/gregvaughn/120/954_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  gregvaughn
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="acalejos" data-post="20" data-topic="63075">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/acalejos/48/30642_2.png" class="avatar"> acalejos:</div>
<blockquote>
<p>I’ve seen the likes of <a class="mention" href="/u/wojtekmach" rel="nofollow">@wojtekmach</a> get peppered with dissent about his Req library with questions like “why do we need another HTTP client?”, and now it’s becoming the defacto HTTP client and the only one I use.</p>
</blockquote>
</aside>
<p>I’m no so sure that’s a fair comparison. Req is a wrapper on Finch offering opinions and ergonomics. It does not re-create an HTTP client. I don’t think that’s a fair comparison to rebuilding a web server from scratch because Phoenix is “too complex”.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="326232" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/mar-simple-web-in-elixir/63075/21">Post #20</a>
	                </div>
	            </div>
              <div id="likers-container-326232" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="326232"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #20"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/63075/load_more?page=3">Load more posts (20 remaining)</a>
</div></template></turbo-stream>