I have the uri "/job/killJobs?jobId=tg+h1qjGGJbpwVAw9C1Pvw"
where tg+h1qjGGJbpwVAw9C1Pvw is the job Id,
Getting blank space at "+"
What's happening is that your "fetching the value" code is applying an application/x-www-form-urlencoded decoding of the query part, but you haven't used the matching encoding procedure when creating the URI.
/job/killJobs?jobId=tg%2Bh1qjGGJbpwVAw9C1Pvw
should produce the result you want (%2B being the pct-encoding of +).
Related
We are running into an issue with Zapier where it's URL encoding our query parameter names which then doesn't get parsed correctly on API side.
Our parameters might look like this:
Where.Name[eq]=john
however the parameter after it's being used in Zapier ends up looking like this:
Where.Name%5Beq%5D=john
Is there any way how to tell Zapier to not URL encode the query parameter name part?
Try using skipEncodingChars field in z.request (from version 11.3.2+)
https://github.com/zapier/zapier-platform/blob/a3bf8eefa6d0dc41c4001bd74f48873eb85ad1d9/packages/schema/docs/build/schema.md#:~:text=to%20false.-,skipEncodingChars,-no
skipEncodingChars | no | string | Contains the characters that you want left unencoded in the query params (req.params). If unspecified, z.request() will percent-encode non-ascii characters and these reserved characters: :$/?#[]#$&+,;=^#`\.
I am working on a mule. While working I came across a scenario, where I want to send an email to the person, where I want to read some Ids from the payload (vars).
Basically, I want to append some static data along with the payload/variables in the email body content.
While writing the piece of code I'm getting syntactical errors. Attached screen a shot.
Would anyone please suggest the fix/code?
You can't use expression delimiters #[ ] inside an expression. They should enclose the whole expression. In that particular field because the 'fx' button is clicked it is assumed that the contents are already an expression. If you see the XML view of that part you'll see the delimiters around the expression.
To resolve the error just remove them from around the variable.
I'm using Node.js and I found out that when I send GET call to a server with C++ then in SQL binding I get C(blank space)(bankspace) (checked with console.log(req.query.keywords) so essentialy the same length of the string, but no chars there.
When I use SELECT * FROM jobs WHERE keywords LIKE' %c++%'; it works normally and gives me results. Is there something I don't know about Node - like it's dropping signs like +?
I think the issue you're having is the same one outlined here: URLs and plus signs
The issue is that a GET is going to use the query string in the URL and plus signs need to be formatted (or encoded) similar to how a space is formatted as %20 in URLs. You could probably use or create a UrlEncoding method in your application.
In Node, I believe you can use something like: encodeURIComponent('C++')
The URL encoding for + is %2B
I am testing the photos.batchGet endpoint.
Per the API docs, it takes two URL parameters "view" and "photoIds". When I try the photoIds parameter, the request only works with one photoId. Using multiple photoIds fails.
I tried using a delimeter between the photoIds in the string (by using a comma, pipe, and space). I also tried not using a delimeter at all. Not using a delimeter returns a response for the last photoId in the string, but not for any of the other photoIds. In short, none of my requests appear to be working. Am I doing something wrong?
Also, depending on server configuration, I think it's recommended for the URL length to be under 2,000 characters. Anything above 30 photoIds would create URLs longer than this.
That being said, maybe it would be better to make this a POST request that accepts a JSON request body? Just a thought, but think this would be better suited. A lot of our tours are above 30 scenes, and we even had a tour with 700 scenes!
The description of the batchGet function was updated. Per the documentation you should pass photoIds as a string and the URL query parameter should be photoIds=<id1>&photoIds=<id2>.
I am wondering if it is possible to prevent YQL from URL encoding a key for a datatable?
Example:
The current guardian API works with IDs like this:
item_id = "environment/2010/oct/29/biodiversity-talks-ministers-nagoya-strategy"
The problem with these IDs is that they contain slashes (/) and these characters should not be URL encoded in the API call but instead stay as they are.
So If I now have this query
SELECT * FROM guardian.content.item WHERE item_id='environment/2010/oct/29/biodiversity-talks-ministers-nagoya-strategy'
while using the following url defintion in my datatable
<url>http://content.guardianapis.com/{item_id}</url>
then this results in this API call
http://content.guardianapis.com/environment%2F2010%2Foct%2F29%2Fbiodiversity-talks-ministers-nagoya-strategy?format=xml&order-by=newest&show-fields=all
Instead the guardian API expects the call to look like this:
http://content.guardianapis.com/environment/2010/oct/29/biodiversity-talks-ministers-nagoya-strategy?format=xml&order-by=newest&show-fields=all
So the problem is really just that the / characters gets encoded as %2F which I don't want to happen in this case.
Any ideas on how this can be achieved?
You can also check the full datatable I am using:
http://github.com/spier/yql-tables/blob/master/guardian/guardian.content.item.xml
The URI-template expansions in YQL (e.g. {item_id}) only follow the version 3 spec. With version 4 it would be possible to simply (only slightly) change the expansion to do what you want, but alas not currently with YQL.
So, a solution. You could bring a very, very basic <execute> block into play: one which adds the item_id value to the path as needed.
<execute><![CDATA[
response.object = request.path(item_id).get().response;
]]></execute>
Finally, see the diff against your table (with a few other, minor tweaks to allow the above to work).