ตัวแปรคำขอและการตอบกลับ

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

เมื่อส่งคําขอไปยังพร็อกซี API คุณสามารถส่งข้อมูลต่อไปนี้บางส่วนหรือทั้งหมดได้ ขึ้นอยู่กับวิธีกําหนดค่าพร็อกซี API

  • ส่วนหัวของคำขอ
  • พารามิเตอร์การค้นหา
  • ข้อมูลฟอร์ม
  • เพย์โหลด XML หรือ JSON
  • URI ของแหล่งข้อมูล

โดยค่าเริ่มต้น ระบบจะส่งข้อมูลทั้งหมดในคําขอจาก ProxyEndpoint ไปยัง TargetEndpoint โดยไม่มีการแก้ไข ดังนั้น เมื่อ TargetEndpoint ส่งคําขอไปยังเซิร์ฟเวอร์แบ็กเอนด์ ระบบจะส่งข้อมูลทั้งหมดในคําขอเดิมไปยังบริการแบ็กเอนด์

เช่นเดียวกับการตอบกลับที่ Edge ได้รับจากบริการแบ็กเอนด์ โดยค่าเริ่มต้น ระบบจะส่งข้อมูลทั้งหมดที่ได้รับในการตอบกลับไปยังแอปที่ส่งคำขอโดยไม่มีการแก้ไข

ระบบส่งข้อมูลคําขอไปยังเซิร์ฟเวอร์แบ็กเอนด์อย่างไร

รูปภาพต่อไปนี้แสดงคําจํากัดความของพร็อกซี API

คำขอจากไคลเอ็นต์ HTTP ที่ส่งผ่านปลายทางพร็อกซีไปยังปลายทางเป้าหมายในแบ็กเอนด์เพื่อเข้าถึงบริการ HTTP ตัวอย่างของปลายทางพร็อกซีและปลายทางเป้าหมายมีให้

สำหรับพร็อกซี API นี้

  • โฮสต์เสมือนของพร็อกซี API: "default"
  • โดเมนที่กําหนดโดยโฮสต์เสมือน: "http://myOrg-prod.apigee.net"
  • เส้นทางฐานของพร็อกซี: "/v1/weather"
  • TargetEndpoint ที่ระบุโดยกฎเส้นทาง: "default"
  • URL เป้าหมาย: "http://weather.yahooapis.com"

แอปไคลเอ็นต์ส่งGETคําขอไปยังพร็อกซี API โดยใช้คําสั่ง curl ต่อไปนี้

curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

โปรดสังเกตว่าคำขอนี้มีทรัพยากร "ผู้คาดการณ์" และพารามิเตอร์คำค้นหา 1 รายการ w Edge จะแยกวิเคราะห์คำขอดังที่แสดงด้านล่าง และกำหนดส่วนต่างๆ ของคำขอให้กับตัวแปรโฟลว์ ดังนี้

{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}

ตัวแปรของโฟลว์ได้รับการตั้งค่าด้วยค่าต่อไปนี้

  • request.verb: "GET"
  • proxy.basepath: "/v1/weather"
  • proxy.pathsuffix: "forecastrss"
  • request.querystring: "w=12797282"

จากนั้น TargetEndpoint จะส่งคําขอไปยังบริการแบ็กเอนด์โดยใช้ข้อมูลจากคําขอ ดังนี้

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

สังเกตวิธีที่ทรัพยากรและพารามิเตอร์การค้นหาที่ระบุในคำขอรวมอยู่ในคำขอไปยังเซิร์ฟเวอร์แบ็กเอนด์โดยอัตโนมัติ จากคําจํากัดความของ TargetEndpoint คําขอจึงมีรูปแบบดังนี้

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

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

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

หรือส่งคำขอในแบบฟอร์มด้านล่างเพื่อรวมข้อมูลส่วนหัวและข้อมูลในแบบฟอร์ม

curl -X POST -H "Content-type:application/json" -d \
  '{"email" : "janetutorialxml@example.com",
    "firstName" : "Jane",
    "lastName" : "Tutorial",
    "userName" : "jtutorialxml"
  }' \
  http://myOrg-prod.apigee.net/v1/register/user

ในตัวอย่างนี้ทั้ง 2 รายการ ระบบจะส่งส่วนหัวและข้อมูลแบบฟอร์มไปยังบริการแบ็กเอนด์โดยไม่มีการแก้ไข ส่วนหัวจะแสดงด้วยตัวแปรของโฟลว์ เช่น request.headers.count และ request.headers.names ข้อมูลแบบฟอร์มจะแสดงโดยตัวแปรการไหล เช่น request.formparam.count และ request.formparam.names

ระบบแสดงข้อมูลการตอบกลับอย่างไร

โดยค่าเริ่มต้น ข้อมูลทั้งหมดที่ Edge ได้รับจากบริการแบ็กเอนด์ในการตอบกลับจะส่งผ่านไม่เปลี่ยนแปลงไปยังแอปที่สร้างคำขอ ดังที่อธิบายไว้ข้างต้นสำหรับคำขอ ข้อมูลที่ได้รับในการตอบกลับจะเข้าถึงได้ผ่านตัวแปรโฟลว์ใน Edge ดูข้อมูลเพิ่มเติมได้ในข้อมูลอ้างอิงตัวแปรโฟลว์

เข้าถึงข้อมูลคำขอและการตอบกลับในพร็อกซี API

มีหลายครั้งที่คุณต้องการแก้ไขข้อมูลคําขอก่อนที่จะส่งไปยังเซิร์ฟเวอร์แบ็กเอนด์ เช่น

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

ข้อมูลในคำตอบก็เช่นเดียวกัน ในขั้นตอนการประมวลผลการตอบกลับ พารามิเตอร์ API อาจต้องการแก้ไขข้อมูลก่อนที่จะส่งกลับไปยังแอปที่ส่งคำขอ

ข้อความคำขอเข้าถึง

คุณใช้นโยบายเพื่อเข้าถึงและเปลี่ยนแปลงส่วนต่างๆ ของข้อความคําขอได้ ซึ่งได้แก่

  • ส่วนหัว
  • พารามิเตอร์การค้นหา
  • พารามิเตอร์ของแบบฟอร์ม
  • ที่อยู่ IP ต้นทาง
  • เนื้อหาข้อความ HTTP

ในขั้นตอนปกติ เมื่อประมวลผลคําขอแล้ว พร็อกซีจะส่งคําขอที่เปลี่ยนรูปแบบไปยังเป้าหมาย

นโยบายจะตรวจสอบตัวแปรคำขอ จากนั้นเปลี่ยนรูปแบบหรือปฏิเสธคำขอตามเนื้อหาของตัวแปรเหล่านั้น นโยบายจะเปลี่ยนรูปแบบคําขอโดยการตั้งค่าตัวแปรที่เหมาะสม เช่น ตัวแปรที่สอดคล้องกับส่วนหัวของคําขอ

เข้าถึงข้อความตอบกลับ

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

พร็อกซีจะได้รับข้อความตอบกลับ จากนั้นนำไปใช้กับชุดนโยบายโดยอิงตามเงื่อนไขที่ประเมินในการตอบกลับ ซึ่งอาจแก้ไขหรือเปลี่ยนแปลงการตอบกลับได้

นโยบายจะตรวจสอบตัวแปรการตอบกลับ จากนั้นเปลี่ยนรูปแบบหรือปฏิเสธคําขอตามเนื้อหาของตัวแปรเหล่านั้น นโยบายจะเปลี่ยนรูปแบบคำตอบโดยการตั้งค่าตัวแปรที่เหมาะสม เช่น ตัวแปรที่สอดคล้องกับส่วนหัวของคำตอบ

นโยบายทั่วไปในการเข้าถึงตัวแปรโฟลว์

Edge กำหนดนโยบายหลายรายการที่คุณสามารถใช้เพื่อประมวลผลข้อมูลคำขอและการตอบกลับ นโยบายดังกล่าวได้แก่

  • นโยบาย AssignMessage: สร้างหรือแก้ไขข้อความคำขอหรือคำตอบ HTTP ในระหว่างขั้นตอนการส่งผ่านพร็อกซี API รวมถึงสร้างและป้อนข้อมูลตัวแปรการไหลใหม่
  • นโยบาย ExtractVariables: ดึงข้อมูลเนื้อหาจากข้อความ ซึ่งรวมถึงส่วนหัว เส้นทาง URI, เพย์โหลด และพารามิเตอร์การค้นหา เพื่อใช้ในคำสั่งเงื่อนไข จากนั้นนโยบายจะใช้รูปแบบข้อความกับเนื้อหาข้อความ และเมื่อพบรายการที่ตรงกัน ก็จะตั้งค่าตัวแปรที่กําหนด
  • นโยบาย JSONtoXML และนโยบาย XMLtoJSON: แปลงข้อความจาก JavaScript Object Notation (JSON) ให้เป็นรูปแบบภาษามาร์กอัปแบบขยาย (XML) หรือในทางกลับกัน
  • นโยบาย JavaCallout, นโยบาย JavaScript, นโยบาย PythonScript, นโยบาย RegularExpressionProtection: นโยบายเหล่านี้ช่วยให้คุณเขียนสคริปต์เพื่อเข้าถึงตัวแปรของโฟลว์ที่มีข้อมูลคำขอและการตอบกลับได้