Step 6: Attach a policy

You're viewing Apigee X documentation.
View Apigee Edge documentation.

Policies can transform message formats, enforce access control, call remote services, authorize users, examine message content for potential threats, and do much more. For more information, see What's a policy?

Proxy and target endpoints define a pipeline for request and response message processing referred to as request and response flows. Flows are sequential stages along the API request processing path. Policies are attached at different points in the request and response message flows as processing steps.

In the following steps, you create a new policy and attach it to your API proxy in the PreFlow response flow to ensure the policy is applied before any other processing takes place. The XMLtoJSON policy used in this tutorial converts the payload of the API's response message from XML to JSON.

  1. Create an XMLtoJSON policy.
    1. Expand the helloworld API proxy bundle in the Apigee Explorer, position your cursor over the policies folder, and click Create icon.

      default.xml target endpoint file in Apigee Explorer

      The Create policy wizard opens.

    2. Select Mediation as the policy category.
    3. Select XML to JSON as the policy type.
    4. Enter XMLtoJSON as the policy name and click Enter

      The policy is added to the /policies folder for the API proxy in the Apigee Explorer and opened in the editor.

    5. Edit the policy to set the <Output> and <Source> elements to response.
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLtoJSON">
          <DisplayName>XMLtoJSON</DisplayName>
          <Properties/>
          <Format>yahoo</Format>
          <OutputVariable>response</OutputVariable>
          <Source>response</Source>
      </XMLToJSON>
  2. Attach the policy to the default proxy endpoint.
    1. Expand the proxies folder in the helloworld API proxy bundle and click default.xml to open the file in the editor.
    2. Add a <Step> element that references the XMLtoJSON policy to the <Response> flow in the API proxy <PreFlow>, as shown below.
      <ProxyEndpoint name="default">
         <PreFlow name="PreFlow">
            <Request>
               <Step>
                  <Name>verify-api-key</Name>
               </Step>
               <Step>
                  <Name>remove-query-param-apikey</Name>
               </Step>
               <Step>
                  <Name>impose-quota</Name>
               </Step>
            </Request>
            <Response>
               <Step>
                  <Name>XMLtoJSON</Name>
               </Step>
            </Response>
         </PreFlow>
       ...
      </ProxyEndpoint>
  3. To redeploy the environment, position your cursor over the dev environment folder in the Apigee Explorer and click Deploy icon.

    Deploy icon displays when you position the cursor over dev environment folder

  4. Call your API in the Terminal tab.
    curl localhost:8998/helloworld?apikey=ZQA5euYtNeJ7ZCGCJMpvd6F2BZOmxOzY

    The XML response is converted to JSON, as follows:

    {
      "root": {
        "city": "San Jose",
        "firstName": "John",
        "lastName": "Doe",
        "state": "CA"
      }
    }

Congratulations! You've successfully attached the XMLtoJSON policy to your API proxy!

Next, you will deploy your API as an archive to an Apigee environment for integration testing and production release.

Next step

1 2 3 4 5 6 (NEXT) Step 7: Deploy to an Apigee environment 8