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

คุณกำลังดูเอกสารประกอบของ 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

โปรดสังเกตว่าคำขอนี้มีทรัพยากร "forecastrss" และพารามิเตอร์การค้นหา 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 อาจมี TargetEndpoint หลายรายการ TargetEndpoint ที่คำขอใช้จะกำหนดโดยข้อมูลคำขอ จากนั้นคุณจะนำข้อมูลดังกล่าวออกจากคำขอก่อนส่งไปยังบริการแบ็กเอนด์

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

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

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

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

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

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

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

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

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

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

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

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

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