Apigee X Request URL query parameter encoding issue

Hi,

Greeting to the community!

I’ve encountered an issue with Apigee X platform where the request urls are getting encoded incorrectly.

Example request I tried from postman is : GET https://api.xyz.com/example?test=123+abc

The url seems to be consistent in Load Balancer logs, and as soon as it reaches Apigee X, in trace session logs, I see it is encoded as https://api.xyz.com/example?test=123%20abc instead of https://api.xyz.com/example?test=123%2Babc .

Which is then forwarded incorrectly to the target server.

I’m currently not sure if this is due to Apigee or do I need to add some additional property in proxy configuration. Have anyone faced a similar issue and any possible resolution for the same?

Thanks,

Hello,
Try to encode a URL before send it to the API to ensure that special characters within it are transmitted over the internet in a format that is safe and compliant with URL standards.

URL Encoding is a form of data encoding that is used in API calls to pass data within a query string. It is used to ensure valid URLs and data are passed between web applications and the server.

Original: https://api.xyz.com/example?test=123+abc

Encoded: https://api.xyz.com/example?test=123%2Babc

1 Like

The IETF standard regarding encoding characters within query strings with HTTP urls, is… maybe not easily discoverable . The relevant spec is RFC 3986.

Section 2.2 of that specification says that plus characters must be % encoded, if you want to transmit them.

It seems like you want to transmit a plus, not a space. So percent-encode it before you send it.

This is correct behavior, based on what you’re telling me.

BTW, this is the advice Gemini has to offer on the subject:

1 Like

@dchiesa1 ,

Thank you for your response.

URI encoding on the client side is definitely an option but isn’t it clear that Apigee is encoding the url incorrectly for plus(“%2B” “+”) as space(“%20” " ").

Rest all the mentioned sub-delims in the client request such as “$” and “&” are correctly encoded by Apigee.