ขั้นตอนที่ 4: เพิ่มนโยบาย

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

เมื่อเปลี่ยนปลายทางเป้าหมายแล้ว คุณก็พร้อมที่จะเพิ่ม นโยบายลงในพร็อกซี

นโยบายคือคอมโพเนนต์ Edge ที่คุณแนบกับจุดต่างๆ ในโฟลว์ของข้อความ ผ่านพร็อกซี API ได้ นโยบายสามารถแปลงรูปแบบข้อความ บังคับใช้การควบคุมการเข้าถึง เรียกใช้บริการระยะไกล อนุญาตผู้ใช้ ตรวจสอบเนื้อหาข้อความเพื่อหาภัยคุกคามที่อาจเกิดขึ้น และอื่นๆ อีกมากมาย

ในบทแนะนำนี้ คุณจะได้เพิ่มนโยบาย XMLtoJSON ลงในพร็อกซี นโยบายนี้ จะแปลงเพย์โหลดของข้อความ XML เป็น JSON และยังเปลี่ยนส่วนหัว Content-Type ของการตอบกลับด้วย

วิธีเพิ่มนโยบาย XML เป็น JSON ลงในพร็อกซี

  1. เปิด UI ของ Edge ในเบราว์เซอร์แล้วเข้าสู่ระบบ
  2. คลิก API Proxies ในหน้าต่างหลัก แล้วเลือกพร็อกซี ในตัวอย่างนี้ ให้เลือกพร็อกซีที่คุณสร้างขึ้นใน ขั้นตอนที่ 1: สร้างพร็อกซี API
  3. คลิกแท็บ Develop

    Edge จะแสดงเครื่องมือแก้ไขพร็อกซี API

  4. ในแผง Navigator ให้คลิก Proxy Endpoints > default > PreFlow

    Edge จะแสดงเครื่องมือแก้ไขโฟลว์

    นอกจากนี้ Edge ยังแสดงการกำหนดค่าพร็อกซีปลายทางเริ่มต้นใน Code แผงด้วย

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
      <Description/>
      <FaultRules/>
      <PreFlow name="PreFlow">
        <Request/>
        <Response/>
      </PreFlow>
      <PostFlow name="PostFlow">
        <Request/>
        <Response/>
      </PostFlow>
      <Flows/>
      <HTTPProxyConnection>
        <BasePath>/getstarted</BasePath>
        <Properties/>
        <VirtualHost>default</VirtualHost>
        <VirtualHost>secure</VirtualHost>
      </HTTPProxyConnection>
      <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
      </RouteRule>
    </ProxyEndpoint>
  5. หากต้องการเพิ่มนโยบายลงในพร็อกซี ให้คลิกปุ่ม + Step ใน PreFlow ของการตอบกลับ (ครึ่งล่างของเครื่องมือแก้ไขโฟลว์)

    Edge จะแสดงรายการนโยบายที่จัดหมวดหมู่ไว้ในกล่องโต้ตอบ Add ซึ่ง คุณสามารถเพิ่มลงในโฟลว์ได้

  6. เลื่อนลงแล้วเลือกนโยบาย XML to JSON ในหมวดหมู่ Mediation category.
  7. ปล่อยชื่อเริ่มต้นไว้ แล้วคลิก Add

    Edge จะแนบนโยบายใหม่กับ PreFlow ของการตอบกลับ

    โปรดทราบว่าเมื่อคุณคลิก Add Edge จะดำเนินการต่อไปนี้

    • เพิ่มนโยบายใหม่ในส่วน Policies ในแผง Navigator
    • เพิ่มนโยบาย XML เป็น JSON ในแผง Flow
    • แสดง XML การกำหนดค่าของนโยบายในแผง Code
  8. คลิก Save เพื่อบันทึกการแก้ไขปัจจุบันพร้อมการเปลี่ยนแปลง

ลองใช้เลย ในหน้าต่างเทอร์มินัล ให้เรียกใช้คำสั่ง curl ต่อไปนี้

curl https://org_name-test.apigee.net/getstarted

โดยที่

หรือจะเปิด URL เดียวกันในเบราว์เซอร์ก็ได้

คุณควรได้รับการตอบกลับต่อไปนี้

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

หากเนื้อหาของการตอบกลับไม่เป็นไปตามนี้ ให้ตรวจสอบสิ่งต่อไปนี้

  1. ปลายทางเป้าหมายคือ "https://mocktarget.apigee.net/xml" ตามที่อธิบายไว้ใน ขั้นตอนที่ 3: เปลี่ยนปลายทางเป้าหมาย:
    • หากได้รับการตอบกลับเป็น "Hello, Guest!" แสดงว่าคุณต้องเพิ่ม "/xml" ที่ส่วนท้าย ของปลายทางเป้าหมาย
    • หากได้รับข้อผิดพลาด 404 ให้ตรวจสอบว่าคุณเข้าถึง "apigee.net" ไม่ใช่ "apigee.com"
  2. การแก้ไขล่าสุดของพร็อกซีใช้งานได้แล้ว ลองทำให้พร็อกซี API ใช้งานได้อีกครั้งตามที่อธิบายไว้ ในหัวข้อการทำให้พร็อกซี API ใช้งานได้และยกเลิกการทำให้ใช้งานได้

หากต้องการดูส่วนหัวของคำขอและการตอบกลับ HTTP ให้เปิดใช้ความละเอียดใน curl ด้วยตัวเลือก -vs (v จะทำให้การตอบกลับละเอียด แต่ s จะระงับ รายละเอียดบางอย่างที่ไม่น่าสนใจ) เช่น

curl -vs https://ahamilton-eval-test.apigee.net/getstarted | python -m json.tool

คุณควรได้รับการตอบกลับที่มีลักษณะดังต่อไปนี้ โปรดทราบว่าส่วนหัว Content-Type ในการตอบกลับคือ "application/json" นโยบาย XML เป็น JSON จะเปลี่ยนส่วนหัวก่อนส่งการตอบกลับกลับ

*   Trying 10.20.30.40...
* TCP_NODELAY set
* Connected to ahamilton-eval-test.apigee.net (10.20.30.40) port 443 (#0)
...
> GET /getstarted HTTP/1.1
> Host: ahamilton-eval-test.apigee.net
> User-Agent: curl/7.58.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 25 May 2018 16:20:00 GMT
< Content-Type: application/json;charset=UTF-8
< Content-Length: 77
< Connection: keep-alive
< X-Powered-By: Apigee
< Access-Control-Allow-Origin: *
...
{ [77 bytes data]
{
  "root": {
    "city": "San Jose",
    "firstName": "John",
    "lastName": "Doe",
    "state": "CA"
  }
}

ขั้นตอนถัดไป

เจาะลึกกว่าเดิม