ตัวแปรโฟลว์ข้อความ

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

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

Use Case

กรณีการใช้งานหลักของตัวแปรโฟลว์ message คือเมื่อพร็อกซีป้อนโฟลว์ข้อผิดพลาด: ตัวแปรโฟลว์ request และ response ไม่อยู่ในขอบเขต

ตัวอย่างเช่น ในขั้นตอนข้อผิดพลาด ออบเจ็กต์ response จะใช้งานไม่ได้ คุณจะตั้งค่าส่วนหัวการตอบกลับในออบเจ็กต์ response ด้วยนโยบาย JavaScript ไม่ได้หากอยู่ในขั้นตอนข้อผิดพลาด โดยคุณสามารถใช้ URL ต่อไปนี้แทนได้

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

คุณใช้นโยบาย AssignMessage เพื่อกำหนดค่าต่างๆ เช่น ส่วนหัว ให้กับออบเจ็กต์ response การกำหนดข้อความจะจัดการสวิตช์โดยอัตโนมัติในบริบทตั้งแต่ขั้นตอนการส่งคำขอ/การตอบกลับไปจนถึงขั้นตอนแสดงข้อผิดพลาด

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

ตัวอย่าง

ในขั้นตอนข้อผิดพลาด คุณจะตั้งค่าส่วนหัวการตอบกลับจากนโยบาย JavaScript ได้โดยใช้ error หรือ message เช่น

context.setVariable('error.header.FOO-1', 'error_header');

หรือ

context.setVariable('message.header.FOO-2', 'message_header');

แต่นิพจน์ต่อไปนี้จะไม่ใช้งานได้

context.setVariable('response.header.FOO-3', 'response_header');

ในกรณีนี้ ตัวแปร response ไม่อยู่ในขอบเขตในขั้นตอนข้อผิดพลาด (โปรดทราบว่าในการติดตาม ตัวแปรนี้จะแสดงให้เห็นเป็นภาพด้วยเครื่องหมายเท่ากับพร้อมเครื่องหมายทับ)

หากต้องการตั้งค่าส่วนหัวการตอบกลับสำหรับทั้งขั้นตอนความสำเร็จและข้อผิดพลาดในนโยบายเดียว ให้ใช้ message ในนโยบาย JavaScript เช่น

<faultrules>
  <faultrule name="invalid_key_rule">
    <step>
      <name>SetResponseHeaders</name>
    </step>
    <condition>(fault.name = "InvalidApiKey")</condition>
  </faultrule>
</faultrules>

ในนโยบาย โค้ดอย่างเช่นโค้ดต่อไปนี้จะตั้งค่าส่วนหัวข้อผิดพลาด/การตอบกลับในบริบทของโฟลว์ใดๆ

context.setVariable('message.header.FOO-1', 'the header value');

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