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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • request.verb: "รับ"
  • proxy.basepath: "/v1/weather"
  • proxy.pathsuffix: "ผู้คาดการณ์"
  • 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

ในทั้งสองตัวอย่าง ระบบจะส่งส่วนหัวและข้อมูลแบบฟอร์มไปยังบริการแบ็กเอนด์โดยไม่มีการเปลี่ยนแปลง ส่วนหัวจะแสดงด้วยตัวแปรโฟลว์ เช่น 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 รวมถึงสร้างและป้อนข้อมูลตัวแปรโฟลว์ใหม่
  • นโยบาย ExtractVariable: ดึงเนื้อหาจากข้อความ รวมถึงส่วนหัว, เส้นทาง URI, เพย์โหลด และพารามิเตอร์การค้นหา เพื่อใช้ในคำสั่งเงื่อนไข จากนั้นนโยบายจะใช้รูปแบบข้อความกับเนื้อหาข้อความและเมื่อพบการจับคู่ที่ตรงกันจะใช้ตัวแปรที่กำหนด
  • นโยบาย JSONtoXML และนโยบาย XMLtoJSON: แปลงข้อความจาก JavaScript Object Notation (JSON) เป็นรูปแบบภาษามาร์กอัป (XML) ที่ขยายได้ หรือในทางกลับกัน
  • นโยบาย JavaScript, นโยบาย JavaScript, นโยบาย PythonScript, นโยบาย regularExpressionProtection: นโยบายเหล่านี้ให้คุณเขียนสคริปต์เพื่อเข้าถึงตัวแปรโฟลว์ที่มีข้อมูลคำขอและการตอบกลับได้