<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rushikesh Pawar</title>
    <description>The latest articles on DEV Community by Rushikesh Pawar (@neorex80).</description>
    <link>https://dev.to/neorex80</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1969544%2F8ac40fce-dc12-4381-b218-4ec8da537bb6.png</url>
      <title>DEV Community: Rushikesh Pawar</title>
      <link>https://dev.to/neorex80</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/neorex80"/>
    <language>en</language>
    <item>
      <title>I Got Tired of Switching Between curl and Postman — So I Built My Own CLI</title>
      <dc:creator>Rushikesh Pawar</dc:creator>
      <pubDate>Sat, 28 Mar 2026 17:59:53 +0000</pubDate>
      <link>https://dev.to/neorex80/i-got-tired-of-switching-between-curl-and-postman-so-i-built-my-own-cli-3nb</link>
      <guid>https://dev.to/neorex80/i-got-tired-of-switching-between-curl-and-postman-so-i-built-my-own-cli-3nb</guid>
      <description>&lt;p&gt;I didn’t start this project to build “another HTTP tool.”&lt;/p&gt;

&lt;p&gt;I started it because I was frustrated.&lt;/p&gt;

&lt;p&gt;Github : &lt;a href="https://github.com/I-invincib1e/Httli" rel="noopener noreferrer"&gt;https://github.com/I-invincib1e/Httli&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Every time I worked with APIs, I found myself stuck between two extremes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;curl&lt;/strong&gt; → powerful, but painful to reuse, ugly output, hard to manage workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Postman&lt;/strong&gt; → beautiful and powerful, but not scriptable, not terminal-friendly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I kept thinking…&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Why do I have to choose between these two worlds?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Real Problem
&lt;/h2&gt;

&lt;p&gt;The issue wasn’t making a single API request.&lt;/p&gt;

&lt;p&gt;It was everything &lt;em&gt;around&lt;/em&gt; it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reusing requests&lt;/li&gt;
&lt;li&gt;Extracting values (like tokens)&lt;/li&gt;
&lt;li&gt;Running flows (login → fetch → update)&lt;/li&gt;
&lt;li&gt;Using it inside scripts or CI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With curl, I ended up writing messy bash scripts.&lt;br&gt;
With Postman, I was clicking around with no automation.&lt;/p&gt;

&lt;p&gt;There was no clean bridge between the two.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;I wanted something simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A CLI tool that feels like Postman… but behaves like curl.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s how &lt;strong&gt;Httli&lt;/strong&gt; started.&lt;/p&gt;


&lt;h2&gt;
  
  
  What Httli Became
&lt;/h2&gt;

&lt;p&gt;Over time, it turned into something much more than I expected.&lt;/p&gt;

&lt;p&gt;Not just a request tool — but a &lt;strong&gt;workflow engine inside the terminal&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🔧 Real Example
&lt;/h2&gt;

&lt;p&gt;Here’s the kind of flow I always wanted:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Save a request&lt;/span&gt;
httli collection save auth/login &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-u&lt;/span&gt; https://api.example.com/login &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-m&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; @payload.json

&lt;span class="c"&gt;# Run it and extract token&lt;/span&gt;
&lt;span class="nv"&gt;TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;httli collection run auth/login &lt;span class="nt"&gt;-x&lt;/span&gt; .data.token&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Run full workflow&lt;/span&gt;
httli collection run-all auth/ &lt;span class="nt"&gt;--fail-fast&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it.&lt;/p&gt;

&lt;p&gt;No switching tools.&lt;br&gt;
No messy scripts.&lt;br&gt;
No manual copying.&lt;/p&gt;


&lt;h2&gt;
  
  
  ✨ Key Features
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. JSON Output for Automation
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;httli request send &lt;span class="nt"&gt;-u&lt;/span&gt; https://httpbin.org/get &lt;span class="nt"&gt;--format&lt;/span&gt; json | jq &lt;span class="s1"&gt;'.ok'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Clean, structured output — perfect for scripts and CI.&lt;/p&gt;


&lt;h3&gt;
  
  
  2. Native Data Extraction
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;httli request send &lt;span class="nt"&gt;-u&lt;/span&gt; /login &lt;span class="nt"&gt;-x&lt;/span&gt; .data.token
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;No need for &lt;code&gt;jq&lt;/code&gt; if you don’t want it.&lt;/p&gt;


&lt;h3&gt;
  
  
  3. Proper Failure Handling
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;httli request send &lt;span class="nt"&gt;-u&lt;/span&gt; /404 &lt;span class="nt"&gt;--fail&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Exits with code &lt;strong&gt;22&lt;/strong&gt; (like curl), making it CI-friendly.&lt;/p&gt;


&lt;h3&gt;
  
  
  4. Project-Based Workflows
&lt;/h3&gt;

&lt;p&gt;Just create a &lt;code&gt;.httli/&lt;/code&gt; folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; .httli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now your collections live inside your project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share with your team&lt;/li&gt;
&lt;li&gt;Commit to Git&lt;/li&gt;
&lt;li&gt;Run anywhere&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  5. Namespaced Collections
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;httli collection save auth/login ...
httli collection save auth/refresh ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Grouped automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;auth/&lt;/span&gt;
  &lt;span class="s"&gt;- login&lt;/span&gt;
  &lt;span class="s"&gt;- refresh&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  6. Batch Execution (run-all)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;httli collection run-all auth/ &lt;span class="nt"&gt;--fail-fast&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run full API flows with built-in chaining:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HTTLI_LAST_STATUS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HTTLI_LAST_JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HTTLI_LAST_BODY_PATH&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 How It Evolved
&lt;/h2&gt;

&lt;p&gt;This project didn’t start clean.&lt;/p&gt;

&lt;p&gt;At first, it was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hardcoded command handling&lt;/li&gt;
&lt;li&gt;limited depth&lt;/li&gt;
&lt;li&gt;basic output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then I rebuilt the core using a &lt;strong&gt;recursive command walker&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That changed everything.&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;commands can be nested infinitely&lt;/li&gt;
&lt;li&gt;logic is clean and modular&lt;/li&gt;
&lt;li&gt;new features don’t break old ones&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🤖 Yes, I Used AI
&lt;/h2&gt;

&lt;p&gt;I’ll be honest — I used AI heavily while building this.&lt;/p&gt;

&lt;p&gt;But not in the way people assume.&lt;/p&gt;

&lt;p&gt;AI didn’t “build it for me.”&lt;/p&gt;

&lt;p&gt;It helped me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;move faster&lt;/li&gt;
&lt;li&gt;explore ideas&lt;/li&gt;
&lt;li&gt;refine implementations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The real challenge was still:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;designing the system&lt;/li&gt;
&lt;li&gt;making tradeoffs&lt;/li&gt;
&lt;li&gt;deciding what &lt;em&gt;should&lt;/em&gt; exist&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And honestly, that’s the part I enjoyed the most.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Why I’m Sharing This
&lt;/h2&gt;

&lt;p&gt;Right now, Httli is at a stage where it’s:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stable&lt;/li&gt;
&lt;li&gt;scriptable&lt;/li&gt;
&lt;li&gt;actually useful&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But tools only get better when people use them.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤝 I’d Love Your Feedback
&lt;/h2&gt;

&lt;p&gt;If this sounds interesting, try it out:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;github.com/I-invincib1e/httli@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And tell me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what feels good&lt;/li&gt;
&lt;li&gt;what feels missing&lt;/li&gt;
&lt;li&gt;what breaks&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 What’s Next
&lt;/h2&gt;

&lt;p&gt;I’m thinking about adding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;smarter workflows&lt;/li&gt;
&lt;li&gt;maybe AI-assisted request generation&lt;/li&gt;
&lt;li&gt;deeper automation features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But for now, I want to focus on making the current experience solid.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;I didn’t build Httli to replace curl or Postman.&lt;/p&gt;

&lt;p&gt;I built it because I needed something in between.&lt;/p&gt;

&lt;p&gt;If you’ve ever felt that gap too —&lt;br&gt;
this might be useful to you.&lt;/p&gt;

&lt;p&gt;Github : &lt;a href="https://github.com/I-invincib1e/Httli" rel="noopener noreferrer"&gt;https://github.com/I-invincib1e/Httli&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;⭐ If you like it, consider starring the repo&lt;br&gt;
🤝 And if you want to contribute, I’d love that even more&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>cli</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
