do not encode with encodeURIComponent if query with method GET passed.
I have studied the source code and saw this file lib/core/util.js which there is a function called buildURL and it is using node's querystring which by default is doing encodeURIComponent causing a third party backend that I'm calling to be broken, as I can not ask them to change, so preferably, it would be much nicer in undici we can have a option to disable encodeURIComponent or enable it.
I can do it, if it is possible.
Can you provide an Minimum Reproducible Example that outlines the behaviour that is leading to the failures?
for example:
API CALL:
import { request, pipeline } from 'undici'; await request('https://jsonplaceholder.typicode.com/comments', { method: 'GET', query: { id: 1, postId: 1, date: '12-10-2024T12:12:40' } })
EXPECTED URL GENERATED:
https://jsonplaceholder.typicode.com/comments?id=1&postId=1&date=12-10-2024T12:12:40
WHAT DEBUG MODE SHOWS:
UNDICI 13726: connecting to jsonplaceholder.typicode.com using https:undefined UNDICI 13726: connected to jsonplaceholder.typicode.com using https:h1 UNDICI 13726: sending request to GET https://jsonplaceholder.typicode.com//comments?id=1&postId=1&date=12-10-2024T12%3A12%3A40 UNDICI 13726: received response to GET https://jsonplaceholder.typicode.com//comments?id=1&postId=1&date=12-10-2024T12%3A12%3A40 - HTTP 200 UNDICI 13726: trailers received from GET https://jsonplaceholder.typicode.com//comments?id=1&postId=1&date=12-10-2024T12%3A12%3A40
HOW TO RUN:
NODE_DEBUG=undici node client.js
as you see it is encoded, this example will work but some server rest implementation (which I would call them bad designed) they don't accept encodedURIComponent in the query string.
If you build the whole url yourself and don't use query you should already be able to do this
Yes I know, but I would prefer to not, when the library is doing it, I was wondering if there could be an option that could be passed to not encode the url?
Maybe we should consider to pass a queryparser as an option?
I was wondering if there could be an option that could be passed to not encode the url?
I don't think we want to maintain special code for bad behaving servers. You will need to do this "hack" in user space.