How do I create dynamic response based on query parameter?

I have used the extract variable policy to extract the query parameters and set as variables. Based on the variables I want to create send specific JSON files.

Creating a mock API only at the moment. How can I use assign message to base response payload on query parameter?

0 2 556
2 REPLIES 2

You can do something like this:

<Response>
  <!-- default response if none of the cases below match -->
  <Step>
    <Name>AM-MockResponseDefault</Name>
  </Step>

  <Step>
    <Name>AM-MockResponse1</Name>
    <Condition>extracted_query_param = "f4"</Condition>
  </Step>


  <Step>
    <Name>AM-MockResponse2</Name>
    <Condition>extracted_query_param = "str675"</Condition>
  </Step>


  ...

And within the AM-MockResponseN policies, you might have this:

<AssignMessage name='AM-MockResponse1'>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <Set>
    <Payload contentType='application/json'>[
  {
    "id": "1",
    "name": "Abhi",
    "pan": "ABC",
    "bg": "O+"
  },
  {
    "id": "2",
    "name": "Ashish",
    "pan": "XYZ",
    "bg": "AB+"
  }
]</Payload>
  </Set>
</AssignMessage>

and etc.

Not applicable

if you want to create payload on the basis of query param, you can just use two assign message policies one in your request and another in your response.

The request one

<AssignMessage name="set-query">
  <AssignVariable>
    <Name>variable_name</Name>
    <Ref>request.queryparam.variable_name</Ref>
  </AssignVariable>
</AssignMessage>

The response one

<AssignMessage name="set-payload">
  <Set>
    <Payload contentType="application/json">
      {"name":"XXXXX", "type":"{variable_name}"}
    </Payload>
  </Set>
<AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>