Search code examples
paw-app

Using a substring of a return value in a subsequent request


I'm attempting to construct a series of Paw calls using the variables feature. I have one situation I'm unable to solve.

At authentication into the server I'm using, I get a JSON response, with one value that looks like this:

endpoint = "https://sub.something.com/thingone/thingtwo.php?token=sometoken&id=blahblah"

The endpoint portion "https://sub.something.com/" is then used as the base for subsequent calls, where a call might be "GET https://sub.something.com/data?id=123".

I don't want to hardcode the endpoint in Paw, as the endpoint will vary based on factors I can't predict at my end.

Is there a way to do basic string processing like this either in Paw, or by calling out to a shell script and using the return value of said script as a Paw variable?


Solution

  • That's doable using that RegExp Match dynamic value extension. Click on that previous link and hit Install Extension.

    Type "Regexp" in the field you expect this value to be used. Pick Regexp Match from the completion results:

    enter image description here

    Then enter a regexp that matches your need, https?://[^/]+/? should be good:

    enter image description here

    I've put your example string in the screenshot above to show that it works, but you can instead put a "pointer" (Response Dynamic Value) to the response you want:

    enter image description here

    In the choices, pick Response Parsed Body if you want to parse a JSON or XML from the reponse. If the string is simply in plain text in the response body, pick Response Raw Body.

    Once these steps are completed, you've got a working "Pointer" + "Parser" to the response that extract the part of the string you need. You can do the same operation with another regex for the token

    Tip: these dynamic value tokens can be selected like text and copy/pasted (Cmd+C/Cmd+V) :-)