ladjs / superagent

Ajax for Node.js and browsers (JS HTTP client). Maintained for @forwardemail, @ladjs, @spamscanner, @breejs, @cabinjs, and @lassjs.
https://ladjs.github.io/superagent/
MIT License
16.57k stars 1.33k forks source link

The agent() set default behavior is nonsensical #1783

Open Louis-Tian opened 9 months ago

Louis-Tian commented 9 months ago

No mean to offend, but I find that agent's default setting behavior to be nonsensical.

I want the agent to manage the cookie for me. But I still need to send query with different query parameters in the requests. Thinking this is a pretty common and reasonable use case. After all that's what happens if you make http request from a browser.

If I am not mistaken, the current api virtually prohibits you from doing that. For example

const agent = superagent.agent()
await agent.get('/xyz').query({ id: 1 })
await agent.get('/xyz')                          // with ?id=1 
await agent.get('/xyz').query({id: undefined })  // without ?id=1
await agent.get('/xyz')                          // with ?id=1 again

The current api means the first query parameter you send automatically becomes the default for all of the subsequent requests and without any way of removing that default.