คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
อะไร
นโยบาย AssignMessage จะเปลี่ยนหรือสร้างข้อความคำขอและการตอบกลับใหม่ในระหว่างโฟลว์ของพร็อกซี API นโยบายนี้ช่วยให้คุณดำเนินการต่อไปนี้กับข้อความเหล่านั้นได้
- เพิ่มพารามิเตอร์แบบฟอร์ม ส่วนหัว หรือพารามิเตอร์การค้นหาใหม่ลงในข้อความ
- คัดลอกพร็อพเพอร์ตี้ที่มีอยู่จากข้อความหนึ่งไปยังอีกข้อความหนึ่ง
- นำส่วนหัว พารามิเตอร์การค้นหา พารามิเตอร์แบบฟอร์ม และ/หรือเพย์โหลดของข้อความ ออกจากข้อความ
- ตั้งค่าพร็อพเพอร์ตี้ที่มีอยู่ในข้อความ
โดยปกติแล้ว คุณจะใช้ AssignMessage เพื่อเพิ่ม เปลี่ยนแปลง หรือนำพร็อพเพอร์ตี้ของคำขอหรือการตอบกลับออก อย่างไรก็ตาม คุณยังใช้นโยบาย AssignMessage เพื่อสร้างข้อความคำขอหรือการตอบกลับที่กำหนดเองและส่งไปยังเป้าหมายอื่นได้ตามที่อธิบายไว้ในสร้างข้อความคำขอที่กำหนดเอง
นโยบาย AssignMessage สามารถสร้างหรือเปลี่ยนข้อความหรือตัวแปรโฟลว์ได้ ใช้นโยบายนี้เพื่อแก้ไขข้อความคำขอก่อนส่งผ่านพร็อกซีไปยังระบบต้นทาง หรือแก้ไขข้อความตอบกลับก่อนส่งต่อให้กับแอปพลิเคชันที่ใช้ API
องค์ประกอบ <AssignMessage>
กำหนดนโยบาย AssignMessage
ค่าเริ่มต้น | ดูแท็บนโยบายเริ่มต้นด้านล่าง |
ต้องระบุหรือไม่ | ต้องระบุ |
ประเภท | ออบเจ็กต์ที่ซับซ้อน |
องค์ประกอบหลัก | ไม่มี |
องค์ประกอบย่อย |
<Add> <AssignTo> <AssignVariable> <Copy> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
องค์ประกอบ <AssignMessage>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
องค์ประกอบ <AssignMessage>
ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <!-- All AssignMessage child elements are optional --> <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>[false|true]</Path> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>[false|true]</ReasonPhrase> <StatusCode>[false|true]</StatusCode> <Verb>[false|true]</Verb> <Version>[false|true]</Version> </Copy> <DisplayName>policy_display_name</DisplayName> <IgnoreUnresolvedVariables>[true|false] </IgnoreUnresolvedVariables> <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>path</Path> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
นโยบายเริ่มต้น
ตัวอย่างต่อไปนี้แสดงการตั้งค่าเริ่มต้นเมื่อคุณเพิ่มนโยบาย AssignMessage ลงในโฟลว์ใน UI ของ Edge
<AssignMessage continueOnError="false" enabled="true" name="assign-message-default"> <DisplayName>Assign Message-1</DisplayName> <Properties/> <Copy source="request"> <Headers/> <QueryParams/> <FormParams/> <Payload/> <Verb/> <StatusCode/> <ReasonPhrase/> <Path/> </Copy> <Remove> <Headers> <Header name="h1"/> </Headers> <QueryParams> <QueryParam name="q1"/> </QueryParams> <FormParams> <FormParam name="f1"/> </FormParams> <Payload/> </Remove> <Add> <Headers/> <QueryParams/> <FormParams/> </Add> <Set> <Headers/> <QueryParams/> <FormParams/> <!-- <Verb>GET</Verb> --> <Path/> </Set> <AssignVariable> <Name>name</Name> <Value/> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
เมื่อคุณแทรกนโยบาย AssignMessage ใหม่ใน UI ของ Edge เทมเพลตจะมี Stub สำหรับการดำเนินการที่เป็นไปได้ทั้งหมด
โดยปกติแล้ว คุณจะเลือกการดำเนินการที่ต้องการทำกับนโยบายนี้
และนำองค์ประกอบย่อยที่เหลือออก เช่น หากต้องการดำเนินการคัดลอก ให้ใช้เอลิเมนต์
<Copy>
และนำ <Add>
, <Remove>
และองค์ประกอบย่อยอื่นๆ ออกจาก
นโยบายเพื่อให้สามารถอ่านได้ง่ายขึ้น
องค์ประกอบนี้มีแอตทริบิวต์ต่อไปนี้ซึ่งมักใช้กับนโยบายทั้งหมด
แอตทริบิวต์ | ค่าเริ่มต้น | จําเป็นไหม | คำอธิบาย |
---|---|---|---|
name |
ไม่มีข้อมูล | จำเป็น |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ ใช้องค์ประกอบ |
continueOnError |
เท็จ | ไม่บังคับ | ตั้งค่าเป็น "false" เพื่อแสดงข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งเป็นลักษณะการทํางานที่คาดหวังตามนโยบายส่วนใหญ่ ตั้งค่าเป็น "จริง" เพื่อดําเนินการโฟลว์ข้อมูลต่อไป แม้ว่านโยบายจะล้มเหลวก็ตาม |
enabled |
จริง | ไม่บังคับ | ตั้งค่าเป็น "true" เพื่อบังคับใช้นโยบาย ตั้งค่าเป็น "false" เพื่อ "ปิด" นโยบาย ระบบจะไม่บังคับใช้นโยบายแม้ว่าจะยังคงแนบไปกับโฟลว์ |
async |
เท็จ | เลิกใช้ | แอตทริบิวต์นี้เลิกใช้งานแล้ว |
ตารางต่อไปนี้แสดงคำอธิบายระดับสูงขององค์ประกอบย่อยของ
<AssignMessage>
องค์ประกอบย่อย | จำเป็นหรือไม่ | คำอธิบาย |
---|---|---|
การดำเนินการทั่วไป | ||
<Add> |
ไม่บังคับ | เพิ่มข้อมูลลงในออบเจ็กต์ข้อความที่ระบุโดยองค์ประกอบ
<AssignTo>
|
<Copy> |
ไม่บังคับ | คัดลอกข้อมูลจากข้อความที่ระบุโดยแอตทริบิวต์ source
ไปยังออบเจ็กต์ข้อความที่ระบุโดยองค์ประกอบ <AssignTo> |
<Remove> |
ไม่บังคับ | ลบองค์ประกอบที่ระบุออกจากตัวแปรข้อความที่ระบุในองค์ประกอบ
<AssignTo> |
<Set> |
ไม่บังคับ | แทนที่ค่าของพร็อพเพอร์ตี้ที่มีอยู่ในการขอหรือการตอบกลับ ซึ่งระบุโดยองค์ประกอบ <AssignTo>
|
องค์ประกอบย่อยอื่นๆ | ||
<AssignTo> |
ไม่บังคับ | ระบุข้อความที่นโยบาย AssignMessage ดำเนินการ ซึ่งอาจเป็นคำขอหรือการตอบกลับมาตรฐาน หรืออาจเป็นข้อความใหม่ที่กำหนดเองก็ได้ |
<AssignVariable> |
ไม่บังคับ | กำหนดค่าให้กับตัวแปรโฟลว์ หากไม่มีตัวแปร ระบบจะ
<AssignVariable> สร้างตัวแปร |
<IgnoreUnresolvedVariables> |
ไม่บังคับ | กำหนดว่าจะหยุดการประมวลผลเมื่อพบตัวแปรที่ยังไม่ได้แก้ไขหรือไม่ |
เราจะอธิบายองค์ประกอบย่อยแต่ละรายการเหล่านี้ในส่วนต่อไป
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีที่คุณใช้ AssignMessage Policy ได้
1: เพิ่มส่วนหัว
ตัวอย่างต่อไปนี้จะเพิ่มส่วนหัวลงในคำขอด้วยองค์ประกอบ
<Add>
<AssignMessage name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </AssignMessage>
2: นำเพย์โหลดออก
ตัวอย่างต่อไปนี้จะลบเพย์โหลดจากการตอบกลับด้วยองค์ประกอบ <Remove>
<AssignMessage name="AM-remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo>response</AssignTo> </AssignMessage>
3: แก้ไขคำตอบ
ตัวอย่างต่อไปนี้แก้ไขออบเจ็กต์การตอบกลับที่มีอยู่โดยการเพิ่มส่วนหัวลงในออบเจ็กต์
<AssignMessage name="AM-modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false </IgnoreUnresolvedVariables> <AssignTo>response</AssignTo> </AssignMessage>
ตัวอย่างนี้ไม่ได้สร้างข้อความใหม่ แต่จะแก้ไขข้อความตอบกลับที่มีอยู่โดยการเพิ่มส่วนหัว HTTP
เนื่องจากตัวอย่างนี้ระบุ response
เป็นชื่อตัวแปรในองค์ประกอบ
<AssignTo>
นโยบายนี้จึงแก้ไขออบเจ็กต์การตอบกลับที่เดิม
ตั้งค่าด้วยข้อมูลที่เซิร์ฟเวอร์เป้าหมายส่งคืน
ส่วนหัว HTTP ที่นโยบายนี้เพิ่มลงในข้อความตอบกลับได้มาจากตัวแปร ที่สร้างขึ้นโดยนโยบาย LookupCache ดังนั้นข้อความตอบกลับที่แก้ไขโดยนโยบาย Assign Message นี้จะมีส่วนหัว HTTP ที่ระบุว่าดึงผลลัพธ์จากแคชหรือไม่ การตั้งค่าส่วนหัวในการตอบกลับจะเป็นประโยชน์สำหรับการแก้ไขข้อบกพร่องและ การแก้ปัญหา
4: ตั้งค่าเนื้อหาแบบไดนามิก
คุณสามารถใช้ Assign Message เพื่อฝังเนื้อหาแบบไดนามิกในเพย์โหลดของข้อความตอบกลับและ ข้อความคำขอได้
หากต้องการฝังตัวแปรโฟลว์ Edge ในเพย์โหลด XML ให้ครอบตัวแปรที่กำหนดด้วยวงเล็บปีกกา
ดังนี้ {prefix.name}
ตัวอย่างต่อไปนี้ฝังค่าของตัวแปรโฟลว์ส่วนหัว HTTP user-agent
ในองค์ประกอบ XML ที่ชื่อ User-agent
<AssignMessage name="AM-set-dynamic-content"> <AssignTo>response</AssignTo> <Set> <Payload contentType="text/xml"> <User-agent>{request.header.user-agent}</User-agent> </Payload> </Set> <IgnoreUnresolvedVariables>false </IgnoreUnresolvedVariables> </AssignMessage>
สำหรับเพย์โหลด JSON คุณสามารถแทรกตัวแปรโดยใช้แอตทริบิวต์ variablePrefix
และ variableSuffix
พร้อมอักขระคั่นตามที่แสดงในตัวอย่างต่อไปนี้
<AssignMessage name="set-payload"> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> { "user-agent": "@request.header.user-agent#" } </Payload> </AssignMessage>
ดูรายการตัวแปรโฟลว์ทั้งหมดได้ที่ข้อมูลอ้างอิงตัวแปรโฟลว์
ตั้งแต่รุ่นคลาวด์ 16.08.17 เป็นต้นไป คุณยังใช้เครื่องหมายปีกกาเพื่อแทรกตัวแปรได้ด้วย
5: นำพารามิเตอร์การค้นหาออก
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์การค้นหา apikey
ออกจากคำขอ
<AssignMessage name="AM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
แนวทางปฏิบัติแนะนำคือการนำพารามิเตอร์การค้นหา apikey
ออกจากข้อความคำขอ
เมื่อใช้นโยบาย VerifyAPIKey สำหรับการตรวจสอบสิทธิ์ผู้ใช้ คุณทำเช่นนี้เพื่อป้องกันไม่ให้มีการส่งข้อมูลคีย์ที่มีความละเอียดอ่อนไปยังเป้าหมายแบ็กเอนด์
6: ตั้งค่า/รับตัวแปร
ตัวอย่างต่อไปนี้ใช้ Assign Message Policy 3 รายการ
- สร้างตัวแปรโฟลว์ 3 รายการในคำขอที่มีค่าคงที่
- รับตัวแปรโฟลว์แบบไดนามิกในนโยบายที่ 2 ในโฟลว์คำขอ
- ตั้งค่าในเพย์โหลดของการตอบกลับ
<!-- Policy #1: Set variables in the request --> <AssignMessage name="AM-set-variables"> <!-- Create a variable named myAppSecret --> <AssignVariable> <Name>myAppSecret</Name> <Value>42</Value> </AssignVariable> <!-- Create a variable named config.environment --> <AssignVariable> <Name>config.environment</Name> <Value>test</Value> </AssignVariable> <!-- Create a variable named config.protocol --> <AssignVariable> <Name>config.protocol</Name> <Value>gopher</Value> </AssignVariable> </AssignMessage>
ในนโยบายแรก องค์ประกอบ <AssignVariable>
จะสร้างและตั้งค่าตัวแปร 3 รายการในคำขอ องค์ประกอบ <Name>
แต่ละรายการจะระบุชื่อตัวแปร และ <Value>
จะระบุค่า
นโยบายที่ 2 ใช้องค์ประกอบ <AssignVariable>
เพื่ออ่านค่าและสร้างตัวแปรใหม่ 3 รายการ
<!-- Policy #2: Get variables from the request --> <AssignMessage continueOnError="false" enabled="true" name="get-variables"> <AssignTo createNew="false" transport="http" type="request"/> <!-- Get the value of myAppSecret and create a new variable, secret --> <AssignVariable> <Name>secret</Name> <Ref>myAppSecret</Ref> <Value>0</Value> </AssignVariable> <!-- Get the value of config.environment and create a new variable, environment --> <AssignVariable> <Name>environment</Name> <Ref>config.environment</Ref> <Value>default</Value> </AssignVariable> <!-- Get the value of config.protocol and create a new variable, protocol --> <AssignVariable> <Name>protocol</Name> <Ref>config.protocol</Ref> <Value>default</Value> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </AssignMessage>
ในนโยบายที่ 2 องค์ประกอบ <Ref>
จะอ้างอิงตัวแปรแหล่งที่มา
และองค์ประกอบ <Name>
จะระบุชื่อของตัวแปรใหม่ หากเข้าถึงตัวแปรที่อ้างอิงโดยองค์ประกอบ <Ref>
ไม่ได้ คุณสามารถใช้ค่าที่ระบุโดยองค์ประกอบ <Value>
ได้
หากต้องการลองใช้นโยบายชุดนี้ ให้ทำดังนี้
- เพิ่มนโยบาย #1 และ #2 ลงในขั้นตอนการส่งคำขอ อย่าลืมวางนโยบาย #1 ก่อนนโยบาย #2
- เพิ่มนโยบายที่ 3 ในขั้นตอนการตอบกลับ
- นโยบายที่ 3 ใช้องค์ประกอบ
<Set>
เพื่อเพิ่มตัวแปรลงในการตอบกลับ ตัวอย่างต่อไปนี้สร้างเพย์โหลด XML ในการตอบกลับที่ Edge ส่งคืนให้ไคลเอ็นต์<!-- Policy #3: Add variables to the response --> <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload"> <DisplayName>put-em-in-the-payload</DisplayName> <Set> <Payload contentType="application/xml"> <wrapper> <secret>{secret}</secret> <config> <environment>{environment}</environment> <protocol>{protocol}</protocol> </config> </wrapper> </Payload> </Set> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
โปรดทราบว่าไวยากรณ์ในการเข้าถึงตัวแปรโฟลว์ใน
<Set>
คือการใส่วงเล็บปีกกา ครอบตัวแปรอย่าลืมตั้งค่าแอตทริบิวต์
contentType
ขององค์ประกอบ<Payload>
เป็น "application/xml" - ส่งคำขอไปยังพร็อกซี API เช่น
curl -vL https://ahamilton-eval-test.apigee.net/myproxy
คุณสามารถส่งผลลัพธ์ผ่านยูทิลิตี เช่น
xmllint
เพื่อให้ XML แสดงในโครงสร้างที่มีการจัดรูปแบบอย่างเหมาะสมได้ (ไม่บังคับ)curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -
เนื้อหาของการตอบกลับควรมีลักษณะดังนี้
<wrapper> <secret>42</secret> <config> <environment>test</environment> <protocol>gopher</protocol> </config> </wrapper>
7: รับส่วนหัวการตอบกลับของข้อความบริการ
ในตัวอย่างต่อไปนี้ สมมติว่ามีนโยบาย ServiceCallout ในคำขอพร็อกซี API
และการตอบกลับของ Callout มีส่วนหัวหลายรายการที่มีชื่อเดียวกัน
(Set-Cookie
) สมมติว่าตัวแปรการตอบกลับของ Service Callout เป็นค่าเริ่มต้น
calloutResponse
นโยบายต่อไปนี้จะรับค่าส่วนหัว Set-Cookie
รายการที่ 2
<AssignMessage name="AM-Payload-from-SC-header"> <Set> <Payload contentType="application/json"> {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"} </Payload> </Set> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> <AssignTo>response</AssignTo> </AssignMessage>
หากต้องการแสดงค่าส่วนหัวทั้งหมด ให้ใช้ตัวแปรต่อไปนี้แทน
{calloutResponse.header.Set-Cookie.values}
องค์ประกอบย่อยแต่ละรายการในการอ้างอิงนี้มีตัวอย่างเพิ่มเติม ดูตัวอย่างเพิ่มเติมได้ที่ ตัวอย่าง AssignMessage ใน GitHub
การอ้างอิงองค์ประกอบย่อย
ส่วนนี้จะอธิบายองค์ประกอบย่อยของ <AssignMessage>
<Add>
เพิ่มข้อมูลลงในคำขอหรือการตอบกลับ ซึ่งระบุโดยองค์ประกอบ <AssignTo>
องค์ประกอบ <Add>
จะเพิ่มพร็อพเพอร์ตี้ใหม่ในข้อความที่ไม่มีอยู่ในข้อความต้นฉบับ
หากต้องการเปลี่ยนค่าของพร็อพเพอร์ตี้ที่มีอยู่ ให้ใช้องค์ประกอบ <Set>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | ประเภทที่ซับซ้อน |
องค์ประกอบหลัก |
<AssignMessage>
|
องค์ประกอบย่อย |
<FormParams> <Headers> <QueryParams> |
องค์ประกอบ <Add>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ใช้องค์ประกอบ <FormParams>
เพื่อรับค่าของ
พารามิเตอร์สตริงการค้นหา 3 รายการจากคำขอเริ่มต้น และตั้งค่าเป็นพารามิเตอร์แบบฟอร์มใน
คำขอปลายทางเป้าหมาย
<AssignMessage name="AM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้ใช้องค์ประกอบ <Headers>
เพื่อเพิ่มส่วนหัว partner-id
ลงในคำขอที่จะส่งไปยังปลายทางเป้าหมาย
<AssignMessage name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </AssignMessage>
ตัวอย่าง 3
ตัวอย่างต่อไปนี้ใช้แท็ก <QueryParams>
เพื่อเพิ่มพารามิเตอร์การค้นหาเดียวที่มีค่าแบบคงที่ลงในคำขอ
<AssignMessage name="AM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </AssignMessage>
ตัวอย่างนี้ใช้ <Add>
ใน PreFlow ของคำขอ หากดูผลลัพธ์ในเครื่องมือ
เช่น เครื่องมือติดตาม คำขอไปยัง https://example-target.com/get
จะกลายเป็น
https://example-target.com/get?myParam=42
องค์ประกอบย่อยของ <Add>
รองรับการแทนที่สตริงแบบไดนามิกที่เรียกว่า
การใช้เทมเพลตข้อความ
<FormParams>
(บุตรของ <Add>
)
เพิ่มพารามิเตอร์แบบฟอร์มใหม่ลงในข้อความคำขอ องค์ประกอบนี้ไม่มีผลต่อข้อความตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <FormParam> |
องค์ประกอบหลัก |
<Add>
|
องค์ประกอบย่อย |
<FormParam> |
องค์ประกอบ <FormParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </Add> </AssignMessage>
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะเพิ่มพารามิเตอร์แบบฟอร์มเดียว ("answer") และค่าคงที่ ("42") ลงในคำขอ
<AssignMessage name="AM-add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo>request</AssignTo> </AssignMessage>
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะรับค่าของพารามิเตอร์การค้นหา name
และ
เพิ่มค่าดังกล่าวลงในคำขอเป็นพารามิเตอร์แบบฟอร์ม แล้วนำพารามิเตอร์การค้นหาออก
<AssignMessage name="AM-Swap-QueryParam-to-FormParams"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> <Remove> <QueryParam name="name"/> </Remove> </AssignMessage>
โปรดทราบว่าตัวอย่างนี้ไม่ได้ระบุเป้าหมายที่มี <AssignTo>
นโยบายนี้จะเพิ่มพารามิเตอร์
ลงในคำขอเท่านั้น
ตัวอย่าง 3
ตัวอย่างต่อไปนี้จะเพิ่มพารามิเตอร์แบบฟอร์มหลายรายการลงในคำขอ
<AssignMessage name="AM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
ตัวอย่างนี้จะรับพารามิเตอร์สตริงการค้นหาจากคำขอต้นทางและเพิ่มพารามิเตอร์เหล่านั้น เป็นพารามิเตอร์แบบฟอร์มที่มีชื่อต่างกัน จากนั้นจะนำพารามิเตอร์การค้นหาเดิมออก Apigee จะส่งคำขอที่แก้ไขแล้วไปยังปลายทางเป้าหมาย
คุณใช้เครื่องมือติดตามเพื่อดูโฟลว์ได้ คุณจะเห็นว่าเนื้อหาของคำขอ มีข้อมูลแบบฟอร์มที่เข้ารหัส URL ซึ่งเดิมส่งเป็นสตริงคำค้นหา พารามิเตอร์
username=nick&zip_code=90210&default_language=en
คุณจะใช้ <FormParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- คำกริยา HTTP: POST
- ประเภทข้อความ: คำขอ
- อย่างใดอย่างหนึ่ง (หรือทั้ง 2 อย่าง) ต่อไปนี้
- ข้อมูลแบบฟอร์ม: ตั้งค่าเป็นค่าใดค่าหนึ่ง หรือ "" (สตริงว่างเปล่า) เช่น หากใช้
curl
ให้เพิ่ม-d ""
ลงในคำขอ - ส่วนหัว
Content-Length
: ตั้งค่าเป็น 0 (หากไม่มีข้อมูลใน คำขอเดิม มิฉะนั้นให้ตั้งค่าเป็นความยาวปัจจุบันในหน่วยไบต์) เช่นcurl
เพิ่ม-H "Content-Length: 0"
ในคำขอ
- ข้อมูลแบบฟอร์ม: ตั้งค่าเป็นค่าใดค่าหนึ่ง หรือ "" (สตริงว่างเปล่า) เช่น หากใช้
เช่น
curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded" https://ahamilton-eval-test.apigee.net/am-test
เมื่อคุณเพิ่ม <FormParams>
Edge จะตั้งค่าส่วนหัว Content-Type
ของคำขอเป็น
"application/x-www-form-urlencoded" ก่อนที่จะส่งข้อความไปยังบริการเป้าหมาย
<Headers>
(บุตรของ <Add>
)
เพิ่มส่วนหัวใหม่ไปยังคำขอหรือการตอบกลับที่ระบุ ซึ่งระบุโดยองค์ประกอบ
<AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <Header> |
องค์ประกอบหลัก |
<Add>
|
องค์ประกอบย่อย |
<Header> |
องค์ประกอบ <Headers>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Add> </AssignMessage>
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะเพิ่มส่วนหัว partner-id
ลงในข้อความคำขอ และ
กำหนดค่าของตัวแปรโฟลว์ verifyapikey.VAK-1.developer.app.partner-id
ให้กับส่วนหัวนั้น
<AssignMessage name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </AssignMessage>
<QueryParams>
(บุตรของ <Add>
)
เพิ่มพารามิเตอร์การค้นหาใหม่ลงในคำขอ องค์ประกอบนี้จะไม่มีผลต่อคำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <QueryParam> |
องค์ประกอบหลัก |
<Add>
|
องค์ประกอบย่อย |
<QueryParam> |
องค์ประกอบ <QueryParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> </AssignMessage>
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะเพิ่มพารามิเตอร์การค้นหา "myParam" ลงในคำขอและกำหนดค่า "42" ให้กับพารามิเตอร์ดังกล่าว
<AssignMessage name="AM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </AssignMessage>
คุณจะใช้ <QueryParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- คำกริยา HTTP: GET
- ประเภทข้อความ: คำขอ
นอกจากนี้ คุณจะตั้งค่าพารามิเตอร์การค้นหาได้ก็ต่อเมื่อแอตทริบิวต์ type
ขององค์ประกอบ <AssignTo>
เป็นข้อความคำขอ การตั้งค่าในคำตอบจะไม่มีผล
หากคุณกําหนดอาร์เรย์พารามิเตอร์การค้นหาที่ว่างเปล่าในนโยบาย
(<Add><QueryParams/></Add>
) นโยบายจะไม่เพิ่มพารามิเตอร์การค้นหา
ใดๆ ซึ่งเหมือนกับการละเว้น <QueryParams>
<AssignTo>
กำหนดออบเจ็กต์ที่นโยบาย AssignMessage จะทำงานด้วย ตัวเลือกมีดังนี้
- ข้อความคำขอ:
request
ที่พร็อกซี API ได้รับ - ข้อความตอบกลับ:
response
ที่เซิร์ฟเวอร์เป้าหมายส่งกลับมา - ข้อความที่กำหนดเอง: ออบเจ็กต์คำขอหรือการตอบกลับที่กำหนดเอง
โปรดทราบว่าในบางกรณี คุณจะเปลี่ยนออบเจ็กต์ที่นโยบาย AssignMessage ทำงานไม่ได้
เช่น คุณไม่สามารถใช้ <Add>
หรือ <Set>
เพื่อเพิ่มหรือเปลี่ยนพารามิเตอร์การค้นหา
(<QueryParams>
) หรือพารามิเตอร์แบบฟอร์ม (<FormParams>
) ในการตอบกลับ คุณสามารถ
แก้ไขพารามิเตอร์การค้นหาและพารามิเตอร์แบบฟอร์มในคำขอได้เท่านั้น
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบหลัก |
<AssignMessage>
|
องค์ประกอบย่อย | ไม่มี |
หากคุณไม่ได้ระบุ <AssignTo>
หรือหากระบุองค์ประกอบ <AssignTo>
แต่ไม่ได้ระบุค่าข้อความสำหรับองค์ประกอบดังกล่าว นโยบายจะดำเนินการกับคำขอหรือการตอบกลับเริ่มต้น ซึ่งอิงตามตำแหน่งที่นโยบายดำเนินการ หากนโยบายทำงานในขั้นตอนการส่งคำขอ นโยบายจะ
ส่งผลต่อข้อความคำขอ หากดำเนินการในขั้นตอนการตอบกลับ นโยบายจะมีผลต่อการตอบกลับ
โดยค่าเริ่มต้น
องค์ประกอบ <AssignTo>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </AssignMessage>
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ระบุว่าเป้าหมายคือคำขอดั้งเดิมที่จะส่งไปยัง ปลายทางเป้าหมาย
<AssignMessage name="assignto-1"> <!-- DO NOT do this --> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
ตัวอย่าง 2
ตัวอย่างต่อไปนี้สร้างออบเจ็กต์คำขอใหม่
<AssignMessage name="AM-assignto-2"> <AssignTo createNew="true" transport="http" type="request">NameOfNewMessage</AssignTo> </AssignMessage>
เมื่อคุณสร้างออบเจ็กต์คำขอหรือการตอบกลับใหม่ องค์ประกอบอื่นๆ ของนโยบาย AssignMessage (เช่น <Add>
, <Set>
และ <Copy>
) จะทำงานกับออบเจ็กต์คำขอใหม่นั้น
คุณเข้าถึงออบเจ็กต์คำขอใหม่ในนโยบายอื่นๆ ในขั้นตอนต่อๆ ไปได้ หรือจะส่งออบเจ็กต์คำขอใหม่ไปยังบริการภายนอกด้วยนโยบาย ServiceCallout ก็ได้
ตัวอย่าง 3
ตัวอย่างต่อไปนี้สร้างออบเจ็กต์คำขอใหม่ชื่อ "MyRequestObject"
<AssignMessage name="assign>to-<2" AssignTo createNew="true" transport=&"http" ty&pe="req>u<est"gt;My>RequestObjectlt;/AssignTo /AssignMessage
เมื่อคุณสร้างออบเจ็กต์คำขอหรือการตอบกลับใหม่ องค์ประกอบอื่นๆ ของนโยบาย AssignMessage (เช่น <Add>
, <Set>
และ <Copy>
) จะทำงานกับออบเจ็กต์คำขอใหม่นั้น
คุณเข้าถึงออบเจ็กต์คำขอใหม่ในนโยบายอื่นๆ ในขั้นตอนต่อๆ ไปได้ หรือจะส่งออบเจ็กต์คำขอใหม่ไปยังบริการภายนอกด้วยนโยบาย ServiceCallout ก็ได้
ตารางต่อไปนี้จะอธิบายแอตทริบิวต์ของ <AssignTo>
แอตทริบิวต์ | คำอธิบาย | จำเป็นหรือไม่ | ประเภท |
---|---|---|---|
createNew |
กำหนดว่านโยบายนี้จะสร้างข้อความใหม่เมื่อกำหนดค่าหรือไม่ หากเป็น "จริง" นโยบายจะสร้างตัวแปรใหม่ของประเภทที่ระบุโดย หากเป็น "false" นโยบายจะตอบกลับด้วยวิธีใดวิธีหนึ่งต่อไปนี้
หากไม่ได้ระบุ
|
ไม่บังคับ | บูลีน |
transport |
ระบุประเภทการรับส่งสำหรับประเภทข้อความคำขอหรือการตอบกลับ ค่าเริ่มต้นคือ "http" (ค่าเดียวที่รองรับ) |
ไม่บังคับ | สตริง |
type |
ระบุประเภทของข้อความใหม่เมื่อ createNew เป็น "จริง" ค่าที่ใช้ได้
คือ "request" หรือ "response"
หากคุณละเว้นแอตทริบิวต์นี้ Edge จะสร้างคำขอหรือการตอบกลับ ขึ้นอยู่กับว่านโยบายนี้ดำเนินการที่ใดในโฟลว์ |
ไม่บังคับ | สตริง |
<AssignVariable>
กำหนดค่าให้กับตัวแปรโฟลว์ หากไม่มีตัวแปรโฟลว์
<AssignVariable>
จะสร้างตัวแปรดังกล่าว
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | ประเภทที่ซับซ้อน |
องค์ประกอบหลัก |
<AssignMessage>
|
องค์ประกอบย่อย |
<Name> (ต้องระบุ)<Ref> <Template> <Value> |
ค่าที่คุณกําหนดให้กับตัวแปรโฟลว์อาจเป็นค่าใดค่าหนึ่งต่อไปนี้
- สตริงตามตัวอักษร: ใช้องค์ประกอบย่อย
<Value>
เพื่อระบุค่าสตริงตามตัวอักษรสำหรับตัวแปรโฟลว์ - ตัวแปรโฟลว์: ใช้องค์ประกอบย่อย
<Ref>
เพื่อระบุค่าของตัวแปรโฟลว์ที่มีอยู่สำหรับตัวแปรโฟลว์ปลายทาง ดูรายการตัวแปรโฟลว์ทั้งหมด ที่ใช้เป็นแหล่งที่มาได้ที่การอ้างอิงตัวแปรโฟลว์ - เทมเพลตข้อความ: ใช้องค์ประกอบย่อย
<Template>
เพื่อระบุเทมเพลตข้อความที่จะ ประมาณค่า เพื่อรับค่าที่จะวางลงในตัวแปรโฟลว์ปลายทาง
องค์ประกอบ <AssignVariable>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e&qu>ot; Assign<Varia>ble < >Namevariable_na<me/N>ame < Refso>urce_variable/Re<f Tem>platemessage<_template/Template or Te><mplate re>f=<9;tem>plate_variable<'/>Tem<plate Value>v<ariable_value/>Value /AssignVariable /AssignMessage
ใช้องค์ประกอบ <Ref>
เพื่อระบุตัวแปรแหล่งที่มา หากเข้าถึงตัวแปรที่อ้างอิงโดย <Ref>
ไม่ได้ Edge จะใช้ค่าที่ระบุโดยองค์ประกอบ <Value>
หากคุณกำหนด <Template>
องค์ประกอบดังกล่าวจะมีความสำคัญเหนือกว่าองค์ประกอบย่อยอื่นๆ
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะตั้งค่าของตัวแปรใหม่ myvar
เป็นค่าตามตัวอักษร "42"
<AssignMessage name="assignvariab>le-<1" Assi>gnVar<iabl>e < Name>myvar</Name> < Val>ue4<2/Value /Assi>g<nVariable /Ass>ignMessage
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะกำหนดค่าของตัวแปรโฟลว์ request.header.user-agent
ให้กับตัวแปรโฟลว์ปลายทาง myvar
และค่าของพารามิเตอร์การค้นหา country
ให้กับตัวแปรโฟลว์ปลายทาง Country
<AssignMessage name="assignvariab>le-<2" Assi>gnVar<iabl>e < Name>myvar</Na>me Refrequest.header.<user>-agen<t/Ref> ValueE<rrorOn>Cop<y/Value /Assi>gnV<ariable Assi>gnVar<iabl>e N<ameCo>untry</Na>me Refrequest.querypar<am.c>ountr<y/Ref> ValueE<rrorOn>Cop<y/Value /Assi>g<nVariable /Ass>ignMessage
หากการกำหนดค่าใดค่าหนึ่งล้มเหลว Edge จะกำหนดค่า "ErrorOnCopy" ให้กับ ตัวแปรโฟลว์ปลายทางแทน
หากไม่มีตัวแปรโฟลว์ myvar
หรือ Country
<AssignVariable>
จะสร้างตัวแปรเหล่านั้น
ตัวอย่าง 3
ตัวอย่างต่อไปนี้ใช้องค์ประกอบย่อย <Template>
เพื่อเชื่อมตัวแปรบริบท 2 ตัว
กับสตริงตัวอักษร (ยัติภังค์) ระหว่างตัวแปรทั้ง 2
<AssignMessage name='AV-via-templat>e-1<' IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables Assign>Varia<ble<>/span> Namemy_destination_<varia>ble/N<ame > Value<BADDBE>EF/Va<lue >Template{system.uuid}-{me<ssageid}/>Tem<plate /Assign>V<ariable /Assig>nMessage
โดยทั่วไปแล้ว <AssignVariable>
จะใช้เพื่อตั้งค่าเริ่มต้นสำหรับพารามิเตอร์การค้นหา ส่วนหัว หรือ
ค่าอื่นๆ ที่ส่งไปพร้อมกับคำขอได้ ซึ่งทำได้โดยใช้ทั้งองค์ประกอบย่อย <Ref>
และ <Value>
ร่วมกัน ดูข้อมูลเพิ่มเติมได้ที่ตัวอย่างสำหรับ <Ref>
<Name>
(บุตรของ <AssignVariable>
)
ระบุชื่อของตัวแปรโฟลว์ปลายทาง (เช่น ตัวแปรที่มีการตั้งค่าโดยนโยบาย AssignMessage) หากไม่มีตัวแปรที่ชื่อตามที่ระบุใน <AssignVariable>
นโยบายจะสร้างตัวแปรที่มีชื่อดังกล่าว
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ต้องระบุ |
ประเภท | สตริง |
องค์ประกอบหลัก |
<AssignVariable>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Name>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e&qu>ot; Assign<Varia>ble< Namevariab>l<e_name/Name >/AssignVariable /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ระบุตัวแปรปลายทางเป็น myvar
และตั้งค่าเป็น
ค่าตามตัวอักษร "42"
<AssignMessage name="assignvariab>le-<1" Assi>gnVar<iabl>e < Name>myvar</Name> < Val>ue4<2/Value /Assi>g<nVariable /Ass>ignMessage
หากไม่มี myvar
<AssignVariable>
จะสร้างขึ้น
<Ref>
(บุตรของ <AssignVariable>
)
ระบุแหล่งที่มาของการกำหนดเป็นตัวแปรโฟลว์ ตัวแปรโฟลว์อาจเป็นตัวแปรโฟลว์ที่กำหนดไว้ล่วงหน้า (ตามที่ระบุไว้ในข้อมูลอ้างอิงตัวแปรโฟลว์) หรือตัวแปรโฟลว์ที่กำหนดเอง ที่คุณสร้างขึ้น
ระบบจะตีความค่าของ <Ref>
เป็นตัวแปรโฟลว์เสมอ คุณไม่สามารถ
ระบุสตริงตามตัวอักษรเป็นค่า
ได้ หากต้องการกำหนดค่าสตริงตามตัวอักษร ให้ใช้องค์ประกอบ <Value>
แทน
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบหลัก |
<AssignVariable>
|
องค์ประกอบย่อย | ไม่มี |
เมื่อระบุตัวแปรโฟลว์ด้วย <Ref>
ให้ละเว้นวงเล็บปีกกา "{}" ที่คุณมักจะใช้เพื่ออ้างอิงตัวแปรโฟลว์ เช่น หากต้องการกำหนดค่าของตัวแปรใหม่ให้เป็นค่าของตัวแปร client.host
flow
ให้ทำดังนี้
Do this (no brackets): <Ref>client.host</Ref> Do NOT do this (brackets): <Ref>{client.host}</Ref>
หากต้องการกำหนดค่าเริ่มต้นสำหรับตัวแปรโฟลว์ปลายทาง ให้ใช้ <Value>
ร่วมกับ <Ref>
หากตัวแปรโฟลว์ที่ระบุโดย
<Ref>
ไม่มีอยู่ อ่านไม่ได้ หรือเป็นค่าว่าง Edge จะกำหนดค่า
ของ <Value>
ให้กับตัวแปรโฟลว์ปลายทางแทน
องค์ประกอบ <Ref>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e&qu>ot; Assign<Varia>ble < >Namevariable_na<me/N>ame< Refsource_>v<ariable/Ref >/AssignVariable /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะกำหนดค่าของตัวแปรโฟลว์ request.header.user-agent
ให้กับตัวแปรโฟลว์ปลายทาง myvar
และค่าของพารามิเตอร์การค้นหา country
ให้กับตัวแปร Country
<AssignMessage name="assignvariab>le-<4" Assi>gnVar<iabl>e < Name>myvar</Na>me Refrequest.header.<user>-ag<ent/Ref /Assi>gnV<ariable Assi>gnVar<iabl>e N<ameCo>untry</Na>me Refrequest.querypar<am.c>oun<try/Ref /Assi>g<nVariable /Ass>ignMessage
ในตัวอย่างนี้ Edge ไม่ได้ระบุค่าเริ่มต้น (หรือค่าสำรอง) สำหรับการกำหนดค่าทั้ง 2 รายการ
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะกำหนดค่าของตัวแปรโฟลว์ request.header.user-agent
ให้กับตัวแปรโฟลว์ปลายทาง myvar
และค่า
ของพารามิเตอร์การค้นหา country
ให้กับตัวแปร Country
<AssignMessage name="assignvariab>le-<2" Assi>gnVar<iabl>e < Name>myvar</Na>me Refrequest.header.<user>-agen<t/Ref> ValueE<rrorOn>Cop<y/Value /Assi>gnV<ariable Assi>gnVar<iabl>e N<ameCo>untry</Na>me Refrequest.querypar<am.c>ountr<y/Ref> ValueE<rrorOn>Cop<y/Value /Assi>g<nVariable /Ass>ignMessage
ในตัวอย่างนี้ หากค่าของrequest.header.user-agent
ตัวแปรโฟลว์
หรือพารามิเตอร์การค้นหา Country
เป็น Null อ่านไม่ได้ หรือมีรูปแบบไม่ถูกต้อง Edge จะกําหนดค่า "ErrorOnCopy" ให้กับตัวแปรใหม่
ตัวอย่าง 3
กรณีการใช้งานทั่วไปสำหรับ <AssignVariable>
คือการตั้งค่าเริ่มต้นของพารามิเตอร์การค้นหา
ส่วนหัว หรือค่าอื่นๆ ที่ส่งไปพร้อมกับคำขอได้ ตัวอย่างเช่น คุณสร้าง
พร็อกซี API สภาพอากาศที่คำขอใช้พารามิเตอร์การค้นหาเดียวชื่อ "w" พารามิเตอร์นี้
มีรหัสของเมืองที่คุณต้องการทราบสภาพอากาศ URL ของคำขอมีรูปแบบดังนี้
http://myCO.com/v1/weather/forecastrss?w=city_ID
หากต้องการกําหนดค่าเริ่มต้นสําหรับ "w" ให้สร้างนโยบาย AssignMessage ดัง ต่อไปนี้
<AssignMessage continueOnError="false" enabled="true" nam>e=&<quot;assignvariable-3" AssignTo createNew="fals>e&q<uot; transport="http>" <type="request"/ > I<gnoreUnresolve>dVari<able>strue /IgnoreUnres<olved>Varia<ble>s AssignVariable < N>amere<quest>.querypa<ram.w/>Nam<e Refreques>t<.queryparam.w/>Ref Value12797282/Value /AssignVariable /AssignMessage
ในตัวอย่างนี้ <AssignVariable>
จะรับค่าของ request.queryparam.w
และกำหนดค่าให้กับตัวมันเอง หากตัวแปรโฟลว์เป็น Null ซึ่งหมายความว่ามีการละเว้นพารามิเตอร์การค้นหา "w" จากคำขอ ตัวอย่างนี้จะใช้ค่าเริ่มต้นจากองค์ประกอบ <Value>
ดังนั้น คุณจึงส่งคำขอไปยังพร็อกซี API นี้ได้
โดยไม่ต้องระบุพารามิเตอร์การค้นหา "w"
http://myCO.com/v1/weather/forecastrss
...และยังคงให้พร็อกซี API แสดงผลลัพธ์ที่ถูกต้อง
ค่าของ <Ref>
ต้องเป็นตัวแปรโฟลว์ เช่น พร็อพเพอร์ตี้ของออบเจ็กต์ request
, response
หรือ target
ซึ่งแตกต่างจากเมื่อใช้ <Value>
ค่านี้อาจเป็นตัวแปรโฟลว์ที่กำหนดเองซึ่งคุณสร้างขึ้นก็ได้
หากคุณระบุตัวแปรโฟลว์ที่ไม่มีอยู่สำหรับค่าของ <Ref>
,
และค่าของ <IgnoreUnresolvedVariables>
เป็น "จริง" Edge จะแสดงข้อผิดพลาด
<Template>
(บุตรของ <AssignVariable>
)
ระบุ เทมเพลตข้อความ เทมเพลตข้อความ ช่วยให้คุณแทนที่สตริงตัวแปรได้เมื่อนโยบายทำงาน และ สามารถรวมสตริงตัวอักษรกับชื่อตัวแปรที่อยู่ในเครื่องหมายปีกกา ได้ นอกจากนี้ เทมเพลตข้อความ ยังรองรับ ฟังก์ชัน เช่น การหลีกเลี่ยงและการแปลงตัวพิมพ์
ใช้แอตทริบิวต์ ref
เพื่อระบุตัวแปรโฟลว์ที่ค่าของตัวแปร
เป็นเทมเพลตข้อความ ตัวอย่างเช่น คุณสามารถจัดเก็บเทมเพลตข้อความเป็นแอตทริบิวต์ที่กำหนดเอง
ในแอปของนักพัฒนาซอฟต์แวร์ เมื่อ Edge ระบุแอปของนักพัฒนาซอฟต์แวร์หลังจากตรวจสอบคีย์ API
หรือโทเค็นความปลอดภัย (ผ่านนโยบายเพิ่มเติม) องค์ประกอบ <AssignVariable>
จะใช้เทมเพลตข้อความจากแอตทริบิวต์ที่กำหนดเองของแอปได้ ซึ่งพร้อมใช้งาน
เป็นตัวแปรโฟลว์จากนโยบายความปลอดภัย
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบหลัก |
<AssignVariable>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Template>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e" > AssignVariabl<e Tem>platemessage<_template/Template or Te><mplate re>f=&<#39;template_va>r<iable'/Tem>plate /AssignVariable /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ใช้ไวยากรณ์การสร้างเทมเพลตข้อความเพื่อเชื่อมตัวแปรบริบท 2 ตัว กับสตริงตัวอักษร (ยัติภังค์) ระหว่างตัวแปรทั้ง 2
<AssignMessage name='AV-via-templat>e-1<' IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables Assign>Varia<ble<>/span> Namemy_destination_<varia>ble/N<ame > Value<BADDBE>EF/Va<lue >Template{system.uuid}-{me<ssageid}/>Tem<plate /Assign>V<ariable /Assig>nMessage
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะระบุตัวแปรโฟลว์ โดยค่าของตัวแปร คือเทมเพลตข้อความที่กำหนดไว้ล่วงหน้า ใช้ตัวเลือกนี้หากต้องการแทรกเทมเพลตที่กำหนดไว้ล่วงหน้าใน รันไทม์โดยไม่ต้องแก้ไขนโยบาย
<AssignMessage name='AV-via-template-indirec>tly&#<39; IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables Assign>Varia<ble<>/span> Namemy_destination_<varia>ble/N<ame > Value<BADDBE>EF/Va<lue Template ref='my_templat>e_v<ariable'/ > </AssignVariabl>e /AssignMessage
ตัวอย่าง 3
ตัวอย่างต่อไปนี้ระบุตัวแปรโฟลว์และค่าข้อความ ในกรณีนี้ หากตัวแปรที่อ้างอิงไม่ใช่ค่าว่าง ระบบจะใช้ค่านั้นเป็นเทมเพลต หากค่าที่อ้างอิง
เป็น Null ระบบจะใช้ค่าข้อความ (ในกรณีนี้คือ {system.uuid}-{messageid}
)
เป็นเทมเพลต รูปแบบนี้มีประโยชน์ในการระบุค่า "ลบล้าง" ในกรณีที่คุณต้องการลบล้างเทมเพลตเริ่มต้น (ส่วนข้อความ) ด้วยค่าที่ตั้งค่าแบบไดนามิก ตัวอย่างเช่น คำสั่งแบบมีเงื่อนไขอาจดึงค่า
จากแผนที่คีย์-ค่าและตั้งค่าตัวแปรที่อ้างอิงเป็นค่านั้น
<AssignMessage name='AV-template-with-fallb>ack<' IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables Assign>Varia<ble<>/span> Namemy_destination_<varia>ble/N<ame > Value<BADDBE>EF/Va<lue Template ref='>my_variable'{system.u<uid}-{mes>sag<eid}/Template > </AssignVariabl>e /AssignMessage
<Value>
(บุตรของ <AssignVariable>
)
กำหนดค่าของตัวแปรโฟลว์ปลายทางที่ตั้งค่าด้วย <AssignVariable>
ระบบจะตีความค่า
เป็นสตริงตามตัวอักษรเสมอ คุณไม่สามารถใช้ตัวแปรโฟลว์เป็นค่าได้ แม้ว่าจะ
ครอบค่าด้วยวงเล็บ ("{}") ก็ตาม หากต้องการใช้ตัวแปรโฟลว์ ให้ใช้ <Ref>
แทน
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบหลัก |
<AssignVariable>
|
องค์ประกอบย่อย | ไม่มี |
เมื่อใช้ร่วมกับองค์ประกอบ <Ref>
<Value>
จะทำหน้าที่เป็นค่าเริ่มต้น (หรือค่าสำรอง) หากไม่ได้ระบุ <Ref>
, แก้ไขไม่ได้ หรือเป็นค่าว่าง ระบบจะใช้ค่าของ <Value>
องค์ประกอบ <Value>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="polic>y_nam<e&qu>ot; Assign<Varia>ble < Na>mevariable_nam<e/Name> < Valuevariable>_<value/Value >/AssignVariable /AssignMessage
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะตั้งค่าตัวแปรโฟลว์ปลายทาง myvar
เป็นค่าตามตัวอักษร "42"
<AssignMessage name="assignvariab>le-<1" Assi>gnVar<iabl>e < Name>myvar</Name> < Val>ue4<2/Value /Assi>g<nVariable /Ass>ignMessage
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะกําหนดค่าของตัวแปรโฟลว์ request.header.user-agent
ให้กับตัวแปรโฟลว์ myvar
และค่าของพารามิเตอร์การค้นหา country
ให้กับตัวแปร Country
<AssignMessage name="assignvariab>le-<2" Assi>gnVar<iabl>e < Name>myvar</Na>me Refrequest.header.<user>-agen<t/Ref> ValueE<rrorOn>Cop<y/Value /Assi>gnV<ariable Assi>gnVar<iabl>e N<ameCo>untry</Na>me Refrequest.querypar<am.c>ountr<y/Ref> ValueE<rrorOn>Cop<y/Value /Assi>g<nVariable /Ass>ignMessage
หากการกำหนดค่าใดค่าหนึ่งล้มเหลว <AssignVariable>
จะกำหนดค่า "ErrorOnCopy" ให้กับ
ตัวแปรโฟลว์ปลายทางแทน
<Copy>
คัดลอกค่าจากข้อความที่ระบุโดยแอตทริบิวต์ source
ไปยังข้อความที่ระบุโดยองค์ประกอบ <AssignTo>
หากคุณไม่ได้ระบุเป้าหมายด้วย <AssignTo>
นโยบายนี้จะคัดลอกค่าไปยังคำขอหรือการตอบกลับ ทั้งนี้ขึ้นอยู่กับว่านโยบายนี้ดำเนินการที่ใดในโฟลว์
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบหลัก |
<AssignMessage>
|
องค์ประกอบย่อย |
<FormParams> <Headers> <Path> <Payload> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
หากคุณไม่ระบุองค์ประกอบย่อยใดๆ ใต้องค์ประกอบ <Copy>
ระบบจะคัดลอกทุกส่วนของข้อความต้นฉบับที่กำหนด
องค์ประกอบ <Copy>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage
continueOnError="[false|true]"
enabled="[true|false]"
> name<="policy_name"
Co>py so<urce="[request|response]&qu<ot;
!--> Can also <be an empt>y array< (FormParams/) -->
FormP>arams
For<mParam nam>e="formpar<am_name&quo>t;for<mparam_value/FormParam
...<
/Fo>rmParams
< !-- >Can als<o be an empty array (Head>ers/) --><
He>aders
Hea<der name>=&quo<t;he>ader_name&qu<ot;he>ader_<value/H>eader
<...
>/Head<ers
Path[false|true]/Path
< Payload[fa>lse|true]/<Payload
> !-- Ca<n also be an empty array (QueryPa>rams/) -->
< QueryPara>ms
QueryP<aram name=&q>uot;q<ueryparam_na>me"quer<yparam_value/>Query<Param
> ...
/Q<ueryParams<>/span>
R<easo>nPhrase[fals<e|tru>e]/Re<asonPhr>ase
Stat<usCode[f>als<e|tru>e]/<StatusCode
Verb[false|true]/Verb<
>
Version[f>als<e|true]/Version
/Copy
!-- Used as the destination for the Copy values --
A>ssignTo createNew="[<true|fals>e<]" transp>ort="http"
type="[request|response]"destination_variable_name/AssignTo
/AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะคัดลอกส่วนหัว พารามิเตอร์แบบฟอร์ม 3 รายการ เส้นทาง และพารามิเตอร์การค้นหาทั้งหมด
จากข้อความ request
ไปยังคำขอใหม่ที่กำหนดเองชื่อ newRequest
<AssignMessage name="AM-co>py-<1" AssignTo createNew="true" transport=&>quot;http&<quot; typ>e=&<quot;request"new>Reque<st/Assi>gnTo <Copy source="request&qu>ot; < Heade>rs < Header> name=&<quot;Header_Name_1"/ /Head>ers < FormParams FormParam name=&q>uot;For<m_Param_Name_1"/ FormPar>am na<me="Fo>rm_Pa<ram_>Name<_2&qu>ot;/ < FormPa>ram< name>=<"Form_Par>am_Name_3"/ /FormParams Pathtrue/Path QueryParams/ /Copy /AssignMessage
เนื่องจากไม่มีองค์ประกอบอย่าง <Payload>
และ <Verb>
นโยบายจึงไม่คัดลอกส่วนต่างๆ ของข้อความ
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะลบทุกอย่างในresponse
message ที่มีอยู่ก่อน จากนั้นจะคัดลอกค่าทั้งหมดจากข้อความอื่นที่ชื่อ secondResponse
ไปยังresponse
message
<AssignMessage name='AM-Copy-Respo>nse<' AssignTo createNew="false" transport=&quo>t;http&q<uot; type>=&q<uot;response"response/AssignTo !>-- <first r>emo<ve any existing values -- Remove/ !-- then copy eve>ryt<hing from the designated mess>a<ge -- Copy s>ource="secondResponse"/ /AssignMessage
องค์ประกอบ <Copy>
มีแอตทริบิวต์เดียว ดังนี้
แอตทริบิวต์ | คำอธิบาย | จำเป็นหรือไม่ | ประเภท |
---|---|---|---|
source |
ระบุออบเจ็กต์ต้นทางของการคัดลอก
|
ไม่บังคับ | สตริง |
<FormParams>
(บุตรของ <Copy>
)
คัดลอกพารามิเตอร์แบบฟอร์มจากคำขอที่ระบุโดยแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังคำขอที่ระบุโดยองค์ประกอบ <AssignTo>
องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <FormParam> หรืออาร์เรย์ว่าง |
องค์ประกอบหลัก |
<Copy>
|
องค์ประกอบย่อย |
<FormParam> |
องค์ประกอบ <FormParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce="[request|response]&qu<ot; !--> Can also <be an empt>y array< (FormParams/) --> FormP>arams For<mParam nam>e="formpar<am_name&quo>t;f<ormpa>r<am_value/FormP>aram ... /FormParams /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะคัดลอกพารามิเตอร์แบบฟอร์มเดียวจากคำขอไปยัง คำขอที่กำหนดเอง "MyCustomRequest"
<AssignMessage name="copy-formpara>ms-<1" Copy source>=&quo<t;request&>quot; < FormParams FormPa>ram name="par<amName&quo>t;For<m param val>ue <1/For>mPa<ram /FormParams /Copy AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะคัดลอกพารามิเตอร์ของแบบฟอร์มทั้งหมดไปยังคำขอที่กำหนดเอง "MyCustomRequest":
<AssignMessage name="copy-formpara>ms-<2" Copy source>=&quo<t;request&q>uot<; > Fo<rmParams/ /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่าง 3
ตัวอย่างต่อไปนี้จะคัดลอกพารามิเตอร์แบบฟอร์ม 3 รายการไปยังคำขอที่กำหนดเอง "MyCustomRequest"
<AssignMessage name="copy-formpara>ms-<3" Copy source>=&quo<t;request&>quot; < FormParams FormPara>m name=<"paramName1"/ > FormP<aram name="paramName2&q>uot;/< Form>Par<am na>me=<"paramName3"/ /FormParams /Copy AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่าง 4
หากมีพารามิเตอร์แบบฟอร์มหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="copy-formpara>ms-<4" Copy source>=&quo<t;request&>quot; < FormParams >FormPar<am name="f1&quo>t;/ < FormParam name=&quo>t;f2&<quot;/ > F<ormPa>ram< name="f3.2"/ /FormParams /Copy AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่างนี้จะคัดลอก "f1", "f2" และค่าที่ 2 ของ "f3" หาก "f3" มีค่าเพียงค่าเดียว ระบบจะไม่คัดลอก
คุณจะใช้ <FormParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- คำกริยา HTTP: POST
- ประเภทข้อความ: การตอบกลับ
- อย่างใดอย่างหนึ่ง (หรือทั้ง 2 อย่าง) ต่อไปนี้
- ข้อมูลแบบฟอร์ม: ตั้งค่าเป็นค่าใดค่าหนึ่ง หรือ "" (สตริงว่างเปล่า) เช่น หากใช้
curl
ให้เพิ่ม-d ""
ลงในคำขอ - ส่วนหัว
Content-Length
: ตั้งค่าเป็น 0 (หากไม่มีข้อมูลใน คำขอดั้งเดิม มิฉะนั้นให้ใช้ความยาวปัจจุบัน เช่นcurl
เพิ่ม-H "Content-Length: 0"
ในคำขอ
- ข้อมูลแบบฟอร์ม: ตั้งค่าเป็นค่าใดค่าหนึ่ง หรือ "" (สตริงว่างเปล่า) เช่น หากใช้
เมื่อคุณคัดลอก <FormParams>
<Copy>
จะตั้งค่า Content-Type
ของข้อความเป็น
"application/x-www-form-urlencoded" ก่อนส่งข้อความไปยังบริการเป้าหมาย
<Headers>
(บุตรของ <Copy>
)
คัดลอกส่วนหัว HTTP จากข้อความคำขอหรือการตอบกลับที่ระบุโดยแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังข้อความคำขอหรือการตอบกลับที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <Header> หรืออาร์เรย์ว่าง |
องค์ประกอบหลัก |
<Copy>
|
องค์ประกอบย่อย |
<Header> |
องค์ประกอบ <Headers>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce="[request|response]&qu<ot; >!-- Can al<so be a>n empty< array (Headers/) --> > Headers < H>eader name=&quo<t;header>_na<me&qu>o<t;header_value>/Header ... /Headers /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะคัดลอกส่วนหัว user-agent
จากคำขอไปยัง
ออบเจ็กต์คำขอใหม่ที่กำหนดเอง
<AssignMessage name="copy-heade>rs-<1" Copy source>=&quo<t;reque>st"<; Headers Heade>r nam<e=">use<r-age>nt&<quot;/ /Headers /Copy AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่าง 2
หากต้องการคัดลอกส่วนหัวทั้งหมด ให้ใช้องค์ประกอบ <Headers>
ที่ว่างเปล่า ดังตัวอย่างต่อไปนี้
<AssignMessage name="copy-heade>rs-<2" Copy source>=&quo<t;reques>t&q<uot;<>/span> < Headers/ /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่าง 3
หากมีส่วนหัวหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="copy-heade>rs-<3" Copy source>=&quo<t;reque>st"<; Headers > Head<er name="h1&>quot;/ < Header name=&>quot;<h2">/ < >Hea<der name="h3.2"/ /Headers /Copy AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่างนี้จะคัดลอก "h1", "h2" และค่าที่ 2 ของ "h3" หาก "h3" มีค่าเพียงค่าเดียว ระบบจะไม่คัดลอก
<Path>
(บุตรของ <Copy>
)
กำหนดว่าจะคัดลอกเส้นทางจากคำขอต้นทางไปยังคำขอปลายทางหรือไม่ องค์ประกอบนี้จะไม่มีผลต่อคำตอบ
หากเป็น "จริง" นโยบายนี้จะคัดลอกเส้นทาง จากข้อความคำขอที่ระบุโดยแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังข้อความคำขอที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Path>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce>="[requ<est|r>esp<onse]>&<quot; Path>[false|true]/Path /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ระบุว่านโยบาย AssignMessage ควรคัดลอกเส้นทางจากคำขอแหล่งที่มา ไปยังออบเจ็กต์คำขอใหม่ที่กำหนดเอง
<AssignMessage name="copy-pa>th-<1" Copy source>=&quo<t;re>ques<t&quo>t; < P>ath<true/Path /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
คุณจะใช้ <Path>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ประเภทข้อความ: คำขอ
<Payload>
(บุตรของ <Copy>
)
กำหนดว่าจะคัดลอกเพย์โหลดจากแหล่งที่มาไปยังปลายทางหรือไม่ โดยต้นทางและปลายทางอาจเป็นคำขอหรือการตอบกลับก็ได้
หากเป็น "จริง" นโยบายนี้จะคัดลอกเพย์โหลดจากข้อความที่ระบุโดยองค์ประกอบ
<Copy>
ของแอตทริบิวต์ source
ไปยังข้อความ
ที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Payload>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce=&q>uot;[request<|respons>e]&<quot;> < Payload[fa>lse|true]/Payload /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่า <Payload>
เป็น "จริง" เพื่อให้ระบบคัดลอกเพย์โหลดของคำขอจากคำขอไปยังการตอบกลับ
<AssignMessage name="AM-copy-paylo>ad-<1" Copy source>=&quo<t;reque>st&q<uot; > Pa<yload>tru<e/Payloa>d /Cop<y Assig>n<Toresponse/Ass>ignTo /AssignMessage
<QueryParams>
(บุตรของ <Copy>
)
คัดลอกพารามิเตอร์สตริงคำค้นหาจากคำขอที่ระบุโดยแอตทริบิวต์ source
ขององค์ประกอบ
<Copy>
ไปยังคำขอที่ระบุโดยองค์ประกอบ
<AssignTo>
องค์ประกอบนี้จะไม่มีผลต่อคำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <QueryParam> หรืออาร์เรย์ว่าง |
องค์ประกอบหลัก |
<QueryParam>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <QueryParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce="[request|response]&qu<ot; !-- >Can also b<e an empty >array (<QueryParams/) --> QueryPar>ams QueryP<aram name=&>quot;queryparam<_name"q>uer<ypara>m<_value/QueryPa>ram ... /QueryParams /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะคัดลอกพารามิเตอร์การค้นหา "my_param" จากคำขอไปยังออบเจ็กต์คำขอที่กำหนดเองใหม่
<AssignMessage name="copy-querypara>ms-<1" Copy source>=&quo<t;request&q>uot; < QueryParams QueryPa>ram n<ame="my>_pa<ram&q>uot<;/ /QueryParams /Copy AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะคัดลอกพารามิเตอร์การค้นหาทั้งหมดจากคำขอไปยังออบเจ็กต์คำขอใหม่ที่กำหนดเอง
<AssignMessage name="copy-querypara>ms-<2" Copy source>=&quo<t;request&qu>ot;< >Que<ryParams/ /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่าง 3
หากมีพารามิเตอร์การค้นหาหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="copy-querypara>ms-<3" Copy source>=&quo<t;request&q>uot; < QueryParams Qu>eryPara<m name="qp1">/ < QueryParam name="q>p2&qu<ot;/ Q>uer<yPara>m n<ame="qp3.2"/ /QueryParams /Copy AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo /AssignMessage
ตัวอย่างนี้จะคัดลอก "qp1", "qp2" และค่าที่ 2 ของ "qp3" หาก "qp3" มีค่าเพียงค่าเดียว ระบบจะไม่คัดลอก
คุณจะใช้ <QueryParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- คำกริยา HTTP: GET
- ประเภทข้อความ: คำขอ
<ReasonPhrase>
(บุตรของ <Copy>
)
กำหนดว่าจะคัดลอกวลีเหตุผลจากคำตอบต้นทางไปยังคำตอบปลายทางหรือไม่ องค์ประกอบนี้จะไม่มีผลต่อคำขอ
หากเป็น "จริง" นโยบายนี้จะคัดลอก ReasonPhrase
จากการตอบกลับ
ที่ระบุโดยแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังการตอบกลับ
ที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <ReasonPhrase>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce="[>request|resp<onse]" > <Reaso>n<Phrase[false|t>rue]/ReasonPhrase /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่า <ReasonPhrase>
เป็น true
เมื่อมีองค์ประกอบต้นทางและ <AssignTo>
ตามที่ระบุ <Copy>
จะคัดลอกวลีเหตุผลจากข้อความตอบกลับที่มีชื่อไปยังออบเจ็กต์ response
ดังนี้
<AssignMessage name="AM-copy-reasonphra>se-<1" Copy source="serviceC>allou<tResponse&qu>ot; < ReasonPhr>ase<true/>Rea<sonPhras>e /Cop<y Assig>n<Toresponse/Ass>ignTo /AssignMessage
คุณจะใช้ <ReasonPhrase>
ได้ก็ต่อเมื่อข้อความต้นทางและปลายทางเป็นประเภทการตอบกลับเท่านั้น
<StatusCode>
(บุตรของ <Copy>
)
กำหนดว่าจะคัดลอกรหัสสถานะจากคำตอบของแหล่งที่มาไปยังคำตอบของปลายทางหรือไม่ องค์ประกอบนี้จะไม่มีผลต่อคำขอ
หากเป็น "จริง" นโยบายนี้จะคัดลอกรหัสสถานะจากข้อความตอบกลับที่ระบุโดย
แอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังข้อความตอบกลับ
ที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <StatusCode>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce=">;[request|re<sponse]&quo>t; < S>t<atusCode[false>|true]/StatusCode /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่า <StatusCode>
เป็น "true" ซึ่งจะคัดลอกรหัสสถานะ
จากออบเจ็กต์การตอบกลับเริ่มต้นไปยังออบเจ็กต์การตอบกลับที่กำหนดเองใหม่
<AssignMessage name="copy-statusco>de-<1" Copy source=>"<;response&>quot<; Statu>sCo<detru>e/S<tatusCode /Copy AssignTo createNew="true" tr>ansport="ht<tp" >t<ype="resp>onse"MyCustomResponse/AssignTo /AssignMessage
คุณจะใช้ <StatusCode>
ได้ก็ต่อเมื่อข้อความต้นทางและปลายทางเป็นประเภทการตอบกลับเท่านั้น
โดยทั่วไปแล้ว <StatusCode>
จะใช้เพื่อตั้งรหัสสถานะการตอบกลับของพร็อกซีเป็นค่าอื่นที่ไม่ใช่ค่าที่ได้รับจากเป้าหมาย
<Verb>
(บุตรของ <Copy>
)
กำหนดว่าจะคัดลอกกริยา HTTP จากคำขอต้นทางไปยังคำขอปลายทางหรือไม่ องค์ประกอบนี้จะไม่มีผลต่อคำตอบ
หากเป็น "true" จะคัดลอกกริยาที่พบในแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังคำขอที่ระบุในองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Verb>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce>="[requ<est|r>esp<onse]>&<quot; Verb>[false|true]/Verb /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่า <Verb>
เป็น "true" ซึ่งจะคัดลอกกริยาจากคำขอเริ่มต้นไปยังคำขอใหม่ที่กำหนดเอง
<AssignMessage name="copy-ve>rb-<1" Copy source>=&quo<t;re>ques<t&quo>t; < V>erb<true/Verb /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
คุณจะใช้ <Verb>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ประเภทข้อความ: คำขอ
<Version>
(บุตรของ <Copy>
)
กำหนดว่าจะคัดลอกเวอร์ชัน HTTP จากคำขอต้นทางไปยังคำขอปลายทางหรือไม่ องค์ประกอบนี้จะไม่มีผลต่อคำตอบ
หากเป็น "จริง" จะคัดลอกเวอร์ชัน HTTP ที่พบในแอตทริบิวต์ source
ขององค์ประกอบ <Copy>
ไปยังออบเจ็กต์ที่ระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<Copy>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Version>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name" Co>py so<urce=&q>uot;[request<|respons>e]&<quot;> < Version[fa>lse|true]/Version /Copy /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่า <Version>
เป็น "จริง" ในคำขอ ซึ่งจะคัดลอกเวอร์ชันจากออบเจ็กต์คำขอเริ่มต้นไปยังออบเจ็กต์คำขอใหม่ที่กำหนดเอง
<AssignMessage name="copy-versi>on-<1" Copy source>=&quo<t;reque>st&q<uot; > Ve<rsion>tru<e/Version /Copy AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
คุณจะใช้ <Version>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ประเภทข้อความ: คำขอ
<DisplayName>
ใช้ร่วมกับแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการโดยใช้ชื่ออื่นที่ฟังดูเป็นธรรมชาติมากกว่า
องค์ประกอบ <DisplayName>
เป็นองค์ประกอบที่ใช้ร่วมกันในทุกนโยบาย
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ หากคุณละเว้น <DisplayName> ระบบจะใช้ค่าของแอตทริบิวต์ name ของนโยบาย |
ประเภท | สตริง |
องค์ประกอบหลัก | <PolicyElement> |
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <DisplayName>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<PolicyElement> <DisplayName>policy_display_name</DisplayName> ... </PolicyElement>
ตัวอย่าง
<PolicyElement> <DisplayName>My Validation Policy</DisplayName> </PolicyElement>
องค์ประกอบ <DisplayName>
ไม่มีแอตทริบิวต์หรือองค์ประกอบย่อย
<IgnoreUnresolvedVariables>
กำหนดว่าจะหยุดการประมวลผลเมื่อพบตัวแปรที่ยังไม่ได้แก้ไขหรือไม่
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<AssignMessage>
|
องค์ประกอบย่อย | ไม่มี |
ตั้งค่าเป็น true
เพื่อไม่สนใจตัวแปรที่ยังไม่ได้รับการแก้ไขและดำเนินการต่อ หรือ
false
ค่าเริ่มต้นคือ false
การตั้งค่า <IgnoreUnresolvedVariables>
เป็น true
แตกต่างจากการตั้งค่า continueOnError
ของ <AssignMessage>
เป็น true
เนื่องจากเป็นการตั้งค่าและรับค่าของตัวแปรโดยเฉพาะ หากตั้งค่า continueOnError
เป็น
true
Edge จะไม่สนใจข้อผิดพลาดทั้งหมด ไม่ใช่แค่ข้อผิดพลาดที่พบเมื่อใช้
ตัวแปร
องค์ประกอบ <IgnoreUnresolvedVariables>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me="policy_name">; IgnoreUnre<solvedVariables[true|false>]< /IgnoreUnre>solvedVariables /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่า <IgnoreUnresolvedVariables>
เป็น "จริง"
<AssignMessage name="AM-Set-Hea>der<s&q>uot; < Set > Head<ers Header name=&#>39;new-header'{possibly<-defin>ed-va<riable}H>ead<er > </Headers /Set IgnoreU>nresolv<edVariablestrue /IgnoreU>n<resolvedVariab>les /AssignMessage
เนื่องจากตั้งค่า <IgnoreUnresolvedVariables>
เป็น true
หากไม่ได้กำหนดตัวแปร
possibly-defined-variable
นโยบายนี้จะไม่แสดงข้อผิดพลาด
<Remove>
นำส่วนหัว พารามิเตอร์การค้นหา พารามิเตอร์แบบฟอร์ม และ/หรือเพย์โหลดของข้อความออกจาก
ข้อความ ข้อความอาจเป็นคำขอหรือการตอบกลับก็ได้ คุณระบุข้อความที่ <Remove>
ดำเนินการได้โดยใช้องค์ประกอบ <AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | ประเภทที่ซับซ้อน |
องค์ประกอบหลัก |
<AssignMessage>
|
องค์ประกอบย่อย |
<FormParams> <Headers> <Payload> <QueryParams> |
กรณีการใช้งานทั่วไปสำหรับ <Remove>
คือการลบพารามิเตอร์การค้นหาหรือส่วนหัวที่มีข้อมูลที่ละเอียดอ่อนออกจากออบเจ็กต์คำขอขาเข้า เพื่อหลีกเลี่ยงการส่งไปยังเซิร์ฟเวอร์แบ็กเอนด์
องค์ประกอบ <Remove>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_name" Remove !-<- Can also >be an empt<y array (F>ormPara<ms/) --> FormParams > FormParam nam<e="fo>rmparam_name&qu<ot;formpara>m_val<ue/FormParam ... /Form<Params > !-- Can< also b>e an em<pty array (Headers/) --&g>t; Heade<rs > Header name=&<quot;hea>der_n<ame&quo>t;header_val<ue/Heade>r < ... /Headers Payload[<false|true]/>Payload < !-- Can a>lso be <an empty array (QueryParams/) --&>gt; QueryPar<ams Q>ueryParam name=<"queryp>ara<m_name&>q<uot;queryparam>_value/QueryParam ... /QueryParams /Remove /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะนำเนื้อหาของข้อความออกจากการตอบกลับ
<AssignMessage name="AM-remo>ve-<1" D>isplayNa<meremove-1/D>isp<layNam>e R<emove > P<ayloadtr>ue/<Payload> </Remove > Assign<Torespons>e</AssignTo /Ass>ignMessage
ในขั้นตอนการตอบกลับ นโยบายนี้จะนำเนื้อหาของการตอบกลับออกและส่งคืนเฉพาะส่วนหัว HTTP ไปยังไคลเอ็นต์
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์แบบฟอร์มและพารามิเตอร์การค้นหาทั้งหมดออกจากออบเจ็กต์ request
<AssignMessage name="AM-remo>ve-<2">; R<emove !<-- Empty (F>ormParams/) removes all form par>amete<rs -- F>ormPa<rams/ Q>ueryPar<ams QueryParam n>ame=&<quot;qp1&quo>t;/< /Q>uer<yParams > /Remo<ve Assi>g<nTorequest/Ass>ignTo /AssignMessage
ตัวอย่าง 3
ตัวอย่างต่อไปนี้จะนำทุกอย่างออกจากออบเจ็กต์ข้อความ
<AssignMessage name="AM-remo>ve-<3"> <Remove/ > Assig<nToreques>t</AssignTo /Ass>ignMessage
โดยปกติแล้ว คุณจะทำเช่นนี้ก็ต่อเมื่อจะใช้องค์ประกอบ <Set>
หรือองค์ประกอบ <Copy>
เพื่อกำหนดค่าแทนที่บางค่าในข้อความ
<FormParams>
(บุตรของ <Remove>
)
นำพารามิเตอร์แบบฟอร์มที่ระบุออกจากคำขอ องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <FormParam> หรืออาร์เรย์ว่าง |
องค์ประกอบหลัก |
<Remove>
|
องค์ประกอบย่อย |
<FormParam> |
องค์ประกอบ <FormParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_name" Remove !-<- Can also >be an empt<y array (F>ormPara<ms/) --> FormParams > FormParam nam<e="fo>rmparam_name&qu<ot;formpara>m_v<alue/Fo>r<mParam .>.. /FormParams /Remove /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์แบบฟอร์ม 3 รายการออกจากคำขอ
<AssignMessage name="AM-remove-formpara>ms-<1">; R<emove >FormPar<ams FormParam name=">;form_p<aram_1"/ FormParam >name=&q<uot;form_param_2"/ >FormP<aram name=&>quo<t;form_>par<am_3&quo>t;/ < /FormPar>a<ms /Remove > AssignTorequest/AssignTo /AssignMessage
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะนําพารามิเตอร์แบบฟอร์มทั้งหมดออกจากคําขอ
<AssignMessage name="AM-remove-formpara>ms-<2">; R<emove F>orm<Params/> </Remove > Assig<nToreques>t</AssignTo /Ass>ignMessage
ตัวอย่าง 3
หากมีพารามิเตอร์แบบฟอร์มหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="AM-remove-formpara>ms-<3">; R<emove >FormPar<ams FormParam >name=&q<uot;f1"/ >FormPar<am name="f2">/ < FormPara>m n<ame=&qu>ot;<f3.2&quo>t;/ < /FormPar>a<ms /Remove > AssignTorequest/AssignTo /AssignMessage
ตัวอย่างนี้จะนำ "f1", "f2" และค่าที่ 2 ของ "f3" ออก หาก "f3" มีค่าเพียงค่าเดียว ระบบจะไม่นำออก
คุณจะใช้ <FormParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ประเภทข้อความ: คำขอ
Content-Type
: "application/x-www-form-urlencoded"
<Headers>
(บุตรของ <Remove>
)
นำส่วนหัว HTTP ที่ระบุออกจากคำขอหรือการตอบกลับ ซึ่งระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <Header> หรืออาร์เรย์ว่าง |
องค์ประกอบหลัก |
<Remove>
|
องค์ประกอบย่อย |
<Header> |
องค์ประกอบ <Headers>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_name" Remove !-<- Can al>so be an e<mpty ar>ray (He<aders/) -->; Header>s Head<er name>="header_n<ame">;he<ader_va>l<ue/Header > ... /Headers /Remove /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะนำส่วนหัว user-agent
ออกจากคำขอ
<AssignMessage name="AM-remove-one-he>ade<r">; R<emove > Head<ers Header name=&qu>ot;us<er-agent>&qu<ot;/ > /<Headers > /Remo<ve Assi>g<nTorequest/Ass>ignTo /AssignMessage
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะนำส่วนหัวทั้งหมดออกจากคำขอ
<AssignMessage name="AM-remove-all-hea>der<s">; R<emove > H<eaders/> </Remove > Assig<nToreques>t</AssignTo /Ass>ignMessage
ตัวอย่าง 3
หากมีส่วนหัวหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="AM-remove-heade>rs-<3">; R<emove > Head<ers Header >name=&q<uot;h1"/ > Head<er name="h2&qu>ot;/ < He>ade<r name=>&qu<ot;h3.2&>quot;/ < /Head>e<rs /Remove > AssignTorequest/AssignTo /AssignMessage
ตัวอย่างนี้จะนำ "h1", "h2" และค่าที่ 2 ของ "h3" ออกจากคำขอ หาก "h3" มีค่าเพียงค่าเดียว ระบบจะไม่นำออก
<Payload>
(บุตรของ <Remove>
)
กำหนดว่า <Remove>
จะลบเพย์โหลดในคำขอหรือการตอบกลับ ซึ่งระบุโดยองค์ประกอบ <AssignTo>
หรือไม่ ตั้งค่าเป็น "true" เพื่อ
ล้างเพย์โหลด หรือตั้งค่าเป็น "false" ค่าเริ่มต้นคือ "false"
ค่าเริ่มต้น | เท็จ |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | บูลีน |
องค์ประกอบหลัก |
<Remove>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Payload>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_na>me" <Remove > <Payload>[<false|true]/Pa>yload /Remove /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่า <Payload>
เป็น "true" เพื่อให้ระบบล้างเพย์โหลดของคำขอ
<AssignMessage name="AM-remove-paylo>ad-<1">; R<emove > P<ayloadtr>ue/<Payload> </Remove > Assig<nToreques>t</AssignTo /Ass>ignMessage
<QueryParams>
(บุตรของ <Remove>
)
นําพารามิเตอร์การค้นหาที่ระบุออกจากคําขอ องค์ประกอบนี้ไม่มีผลต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <QueryParam> หรืออาร์เรย์ว่าง |
องค์ประกอบหลัก |
<Remove>
|
องค์ประกอบย่อย |
<QueryParam> |
องค์ประกอบ <QueryParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=&qu>ot;po<licy_name" Remove !-<- Can also b>e an empty< array (Que>ryParam<s/) --> QueryParams >QueryParam name=<"query>param_name"<;queryparam_>val<ue/Quer>y<Param ..>. /QueryParams /Remove /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์การค้นหาเดียวออกจากคำขอ
<AssignMessage name="AM-remove-querypara>ms-<1">; Rem<ove Q>ueryParam<s QueryParam n>ame=&qu<ot;qp1">/ < /Q>uer<yParams > /Remo<ve Assi>g<nTorequest/Ass>ignTo /AssignMessage
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์การค้นหาทั้งหมดออกจากคำขอ
<AssignMessage name="AM-remove-querypara>ms-<2">; Rem<ove Qu>ery<Params/> </Remove > Assig<nToreques>t</AssignTo /Ass>ignMessage
ตัวอย่าง 3
หากมีพารามิเตอร์การค้นหาหลายรายการที่มีชื่อเดียวกัน ให้ใช้ไวยากรณ์ต่อไปนี้
<AssignMessage name="AM-remove-querypara>ms-<3">; Rem<ove Q>ueryParam<s QueryParam n>ame="<;qp1"/ Qu>eryParam <name="qp2"/ > Q<ueryParam na>me=<"q>p3.<2"/> </QueryPar>a<ms /Remove > AssignTorequest/AssignTo /AssignMessage
ตัวอย่างนี้จะนำ "qp1", "qp2" และค่าที่ 2 ของ "qp3" ออกจากคำขอ หาก "qp3" มีค่าเพียงค่าเดียว ระบบจะไม่นำออก
ตัวอย่าง 4
ตัวอย่างต่อไปนี้จะนำพารามิเตอร์การค้นหา apikey
ออกจากคำขอ
<AssignMessage name="AM-remove-query-p>ara<m">; R<emove Q>ueryPar<ams QueryParam name>=&quo<t;apikey&quo>t;/< /Q>uer<yParams > /Remo<ve Assi>g<nTorequest/Ass>ignTo /AssignMessage
คุณจะใช้ <QueryParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- คำกริยา HTTP: GET
- ประเภทข้อความ: คำขอ
<Set>
ตั้งค่าข้อมูลในข้อความคำขอหรือการตอบกลับ ซึ่งระบุโดยองค์ประกอบ <AssignTo>
<Set>
เขียนทับส่วนหัวหรือ
พารามิเตอร์การค้นหาหรือแบบฟอร์มที่มีอยู่ในข้อความเดิม ส่วนหัว พารามิเตอร์การค้นหา และพารามิเตอร์แบบฟอร์ม
ในข้อความ HTTP อาจมีค่าหลายค่า หากต้องการเพิ่มค่าเพิ่มเติมสำหรับส่วนหัวหรือพารามิเตอร์ ให้ใช้
องค์ประกอบ <Add>
แทน
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | ประเภทที่ซับซ้อน |
องค์ประกอบหลัก |
<AssignMessage>
|
องค์ประกอบย่อย |
<FormParams> <Headers> <Payload> <Path> <QueryParams> <ReasonPhrase> <StatusCode> <Verb> <Version> |
องค์ประกอบ <Set>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_na>me"<; Set FormParams F>ormParam name=&<quot;formp>aram_name"<formparam_v>alue/<FormPar>am < ... /FormParams > Headers < Head>er name="h<eader_na>me&qu<ot;h>eade<r_val>ue/He<ader ... /Headers Pathpath/Path Payload contentType="content_type&q>uot; variab<lePrefix>=&quo<t;prefix&qu>ot; < variableSuffix="suffix&>quot;new_payload</Payload > QueryParams < QueryPa>ram n<ame="qu>eryparam_name"queryparam_<value/QueryPa>ram < ... > /QueryParams ReasonPhra<sereason_fo>r_err<or o>r {variable}/ReasonPhrase StatusCo<deHTT>P_sta<tus_cod>e or {variable}/Stat<usCod>e < V>e<rb[GET|POST|PU>T|PATCH|DELETE|{variable}]/Verb Version[1.0|1.1|{variable}]/Verb /Set /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่าส่วนหัวที่เฉพาะเจาะจง เมื่อแนบนโยบายนี้ในขั้นตอนการส่งคำขอ ระบบจะอนุญาตให้ระบบต้นทางรับส่วนหัวเพิ่มเติมที่ไม่ได้รวมอยู่ในคำขอขาเข้าเดิม
<AssignMessage name="AM-Set-He>ade<r&q>uot; < Set > Header<s Header name="authentic>ated-developer"{verifyapikey<.VAK-1.>devel<oper.id}>/He<ader> < /Heade>rs /S<et Assi>g<nTorequest/Ass>ignTo /AssignMessage
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะเขียนทับเพย์โหลดสำหรับการตอบกลับ รวมถึงส่วนหัว Content-Type
<AssignMessage name="AM-Overwrite-Pay>loa<d&q>uot; < Set Payload contentType="ap>plication/json&qu<ot;{ &qu>ot;<stat>us&<quot; : >42 }/Pay<load /S>e<t AssignTore>sponse/AssignTo /AssignMessage
<FormParams>
(บุตรของ <Set>
)
เขียนทับพารามิเตอร์แบบฟอร์มที่มีอยู่ในการขอและแทนที่ด้วยค่าใหม่ที่คุณ ระบุด้วยองค์ประกอบนี้ องค์ประกอบนี้จะไม่มีผลต่อคำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <FormParam> |
องค์ประกอบหลัก |
<Set>
|
องค์ประกอบย่อย |
<FormParam> |
องค์ประกอบ <FormParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_na>me"<; Set FormParams F>ormParam name=&<quot;formp>aram_name"<formparam_v>alu<e/Fo>r<mParam .>.. /FormParams /Set /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะตั้งค่าพารามิเตอร์แบบฟอร์มที่ชื่อ "myparam" เป็นค่าของตัวแปร request.header.myparam
ในคำขอใหม่ที่กำหนดเอง
<AssignMessage name="AM-set-formpara>ms-<1&q>uot; < Set >FormPar<ams FormParam name>="myparam"{req<uest.heade>r.myp<aram}/FormP>ara<m > /<FormParams /Set AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo /AssignMessage
คุณจะใช้ <FormParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- คำกริยา HTTP: POST
- ประเภทข้อความ: คำขอ
หากคุณกำหนดพารามิเตอร์แบบฟอร์มที่ว่างเปล่าในนโยบาย
(<Add><FormParams/></Add>
) นโยบายจะไม่เพิ่มพารามิเตอร์แบบฟอร์ม
ใดๆ ซึ่งเหมือนกับการละเว้น <FormParams>
<Set>
จะเปลี่ยน Content-Type
ของข้อความเป็น
"application/x-www-form-urlencoded" ก่อนส่งไปยังปลายทางเป้าหมาย
<Headers>
(บุตรของ <Set>
)
เขียนทับส่วนหัว HTTP ที่มีอยู่แล้วในคำขอหรือการตอบกลับ ซึ่งระบุโดยองค์ประกอบ <AssignTo>
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <Header> |
องค์ประกอบหลัก |
<Set>
|
องค์ประกอบย่อย |
<Header> |
องค์ประกอบ <Headers>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy>_name&q<uot; Set Headers > Header <name=&q>uot;header_name<"he>ade<r_va>l<ue/Header > ... /Headers /Set /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะตั้งค่าส่วนหัว x-ratelimit-remaining
เป็นค่าของตัวแปร
ratelimit.Quota-1.available.count
<AssignMessage name="AM-Set-RateLimit-He>ade<r&q>uot; < Set > Head<ers Header name="X-RateL>imit-Remaining"{ratelimit.Quot<a-1.ava>ilabl<e.count}>/He<ader> < /Heade>rs /Se<t Assig>n<Toresponse/Ass>ignTo /AssignMessage
หากคุณกำหนดส่วนหัวที่ว่างเปล่าในนโยบาย
(<Set><Headers/></Set>
) นโยบายจะไม่ตั้งค่าส่วนหัวใดๆ ซึ่ง
จะส่งผลเช่นเดียวกับการละเว้น <Headers>
<Path>
(บุตรของ <Set>
)
<Payload>
(บุตรของ <Set>
)
กำหนดเนื้อหาข้อความสำหรับคำขอหรือการตอบกลับ ซึ่งระบุโดยองค์ประกอบ <AssignTo>
เพย์โหลดอาจเป็นประเภทเนื้อหาที่ถูกต้อง เช่น ข้อความธรรมดา
JSON หรือ XML
ค่าเริ่มต้น | สตริงว่าง |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบหลัก |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Payload>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_name" Set Payload contentType="content_type" variablePrefix=>"prefi<x"<>/span> < > <variableSuffix>="suffix"new_payload/Payload /Set /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่าเพย์โหลดข้อความธรรมดา
<AssignMessage name="set-paylo>ad-<1&q>uot; < Set Payload contentType=&q>uo<t;text/p>lai<n&qu>o<t;42/Payload > /Set /AssignMessage
ตัวอย่าง 2
ตัวอย่างต่อไปนี้จะตั้งค่าเพย์โหลด JSON
<AssignMessage name="set-paylo>ad-<2&q>uot; < Set Payload contentType="ap>plication/json" {"name&q<uot;:&qu>ot;<foo&>q<uot;, "ty>pe":"bar"} /Payload /Set /AssignMessage
ตัวอย่าง 3
ตัวอย่างต่อไปนี้จะแทรกค่าตัวแปรลงในเพย์โหลดโดยการครอบชื่อตัวแปร ด้วยวงเล็บปีกกา
<AssignMessage name="set-paylo>ad-<3&q>uot; < Set Payload contentType="ap>plication/json" {"name":"f<oo">, &<quot>;<type":&qu>ot;{variable_name}"} /Payload /Set /AssignMessage
ใน Apigee เวอร์ชันก่อนหน้า คุณไม่สามารถใช้เครื่องหมายปีกกาเพื่อระบุการอ้างอิงตัวแปรภายในเพย์โหลด JSON ได้
ในรุ่นเหล่านั้น คุณ
ต้องใช้แอตทริบิวต์ variablePrefix
และ variableSuffix
เพื่อ
ระบุอักขระคั่น และใช้อักขระเหล่านั้นเพื่อครอบชื่อตัวแปร ดังนี้
<AssignMessage name="set-payloa>d-3<b&q>uot; < Set Payload contentType="application/json" variablePrefix=&q>uot;@" variableSuffix="#" {&quo<t;name&q>uot<;:&q>u<ot;foo", >"type":"@variable_name#"} /Payload /Set /AssignMessage
ไวยากรณ์เก่านี้ยังคงใช้งานได้
ตัวอย่าง 4
ระบบจะถือว่าเนื้อหาของ <Payload>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่านโยบาย AssignMessage จะแทนที่ตัวแปรที่อยู่ในเครื่องหมายปีกกาด้วยค่าของตัวแปรที่อ้างอิงในรันไทม์
ตัวอย่างต่อไปนี้ใช้ไวยากรณ์วงเล็บปีกกาเพื่อตั้งค่าส่วนหนึ่งของเพย์โหลดเป็นค่าตัวแปร
<AssignMessage name="set-paylo>ad-<4&q>uot; < Set Payload contentType=>"t<ext/>xml"< > r<oot> <e1>sunday</e1> <e2>funday</e2> < e3{>var1}</e3 > /<root> < /Payload > /Set /AssignMessage
ตารางต่อไปนี้จะอธิบายแอตทริบิวต์ของ <Payload>
แอตทริบิวต์ | คำอธิบาย | การมีบุคคลอยู่ | ประเภท |
---|---|---|---|
contentType |
หากระบุ ค่าของ |
ไม่บังคับ | สตริง |
variablePrefix |
ระบุตัวคั่นนำหน้าในตัวแปรโฟลว์ (ไม่บังคับ) ค่าเริ่มต้นคือ "{" ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงตัวแปรโฟลว์ | ไม่บังคับ | Char |
variableSuffix |
ระบุตัวคั่นต่อท้ายในตัวแปรโฟลว์ (ไม่บังคับ) ค่าเริ่มต้นคือ "}" ดูข้อมูลเพิ่มเติมได้ที่ข้อมูลอ้างอิงตัวแปรโฟลว์ | ไม่บังคับ | Char |
<QueryParams>
(บุตรของ <Set>
)
เขียนทับพารามิเตอร์การค้นหาที่มีอยู่ในคำขอด้วยค่าใหม่ องค์ประกอบนี้จะไม่มีผล ต่อการตอบกลับ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | อาร์เรย์ขององค์ประกอบ <QueryParam> |
องค์ประกอบหลัก |
<Set>
|
องค์ประกอบย่อย |
<QueryParam> |
องค์ประกอบ <QueryParams>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_nam>e"< Set QueryParams Que>ryParam name=&qu<ot;querypar>am_name"qu<eryparam_val>ue/<Quer>y<Param ..>. /QueryParams /Set /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะตั้งค่าพารามิเตอร์การค้นหา "address" เป็นค่าของตัวแปร request.header.address
<AssignMessage name="AM-set-querypara>ms<-1&>quot;< Set Q>ueryPar<ams QueryParam name>="address"{req<uest.header>.addr<ess}/QueryPa>ram< > </QueryParams > /Set /AssignMessage
คุณจะใช้ <QueryParams>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- คำกริยา HTTP: GET
- ประเภทข้อความ: คำขอ
หากคุณกําหนดพารามิเตอร์การค้นหาที่ว่างเปล่าในนโยบาย
(<Set><QueryParams/></Set>
) นโยบายจะไม่ตั้งค่าพารามิเตอร์การค้นหา
ใดๆ ซึ่งเหมือนกับการละเว้น <QueryParams>
<ReasonPhrase>
(บุตรของ <Set>
)
ตั้งค่าวลีเหตุผลในการตอบกลับ โดยปกติแล้วจะดำเนินการเพื่อแก้ไขข้อบกพร่องร่วมกับ
<StatusCode>
องค์ประกอบนี้จะไม่มีผลต่อคำขอ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริง |
องค์ประกอบหลัก |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <ReasonPhrase>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_name>" Set ReasonPhrase<reason_for_er>ror< or >{<variable}/Reas>onPhrase /Set /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้กำหนดวลีเหตุผลอย่างง่าย
<AssignMessage name="set-reasonphra>se-<1&q>uot; < Set Re>asonPhraseBa<d medicine/Re>aso<nPhr>ase< /Set AssignTo createNew="true" transport=&qu>o<t;http" t>ype="response"/ /AssignMessage
ตัวอย่าง 2
ระบบจะถือว่าเนื้อหาของ <ReasonPhrase>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่า
ชื่อตัวแปรที่ครอบด้วยวงเล็บปีกกาจะถูกแทนที่ด้วยค่าของตัวแปรที่อ้างอิงในเวลาเรียกใช้
ดังตัวอย่างต่อไปนี้
<AssignMessage name="AM-set-reasonphra>se-<2&q>uot; < Set Re>asonPhrase{calloutresponse.reas<on.phrase}/Re>aso<nPhr>ase< /Set > Assign<Torespons>e</AssignTo /Ass>ignMessage
คุณจะใช้ <ReasonPhrase>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ประเภทข้อความ: การตอบกลับ
<StatusCode>
(บุตรของ <Set>
)
ตั้งค่ารหัสสถานะในการตอบกลับ องค์ประกอบนี้จะไม่มีผลต่อคำขอ
ค่าเริ่มต้น | "200" (เมื่อตั้งค่าแอตทริบิวต์ createNew ของ <AssignTo> เป็น "จริง") |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริงหรือ variable |
องค์ประกอบหลัก |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <StatusCode>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy_na>me" Set StatusCode<HTTP_status>_co<de o>r< {variable}/St>atusCode /Set /AssignMessage
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้ตั้งรหัสสถานะอย่างง่าย
<AssignMessage name="AM-set-statuscode>-40<4&q>uot; < Set >Sta<tusCode404/>Sta<tusC>ode< /Set > Assign<Torespons>e</AssignTo /Ass>ignMessage
ตัวอย่างที่ 2
ระบบจะถือว่าเนื้อหาของ <StatusCode>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่าชื่อตัวแปรที่อยู่ในเครื่องหมายปีกกาจะถูกแทนที่ด้วยค่าของตัวแปรที่อ้างอิงในเวลาที่รันไทม์ ดังตัวอย่างต่อไปนี้
<AssignMessage name="set-statusco>de-<2&q>uot; < Set >StatusCode{calloutresponse.st<atus.code}/>Sta<tusC>ode< /Set > Assign<Torespons>e</AssignTo /Ass>ignMessage
คุณจะใช้ <StatusCode>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ประเภทข้อความ: การตอบกลับ
<Verb>
(บุตรของ <Set>
)
ตั้งค่ากริยา HTTP ในคำขอ องค์ประกอบนี้จะไม่มีผลต่อคำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริงหรือ variable |
องค์ประกอบหลัก |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Verb>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;pol>icy_name" Set Verb[GET|POS<T|PUT>|PA<TCH|>D<ELETE|{variabl>e}]/Verb /Set /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้จะตั้งค่ากริยาอย่างง่ายในคำขอ
<AssignMessage name="AM-set-ve>rb-<1&q>uot; < Se>t < Ver>bPO<ST/V>erb< /Set > Assig<nToreques>t</AssignTo /Ass>ignMessage
ตัวอย่าง 2
ระบบจะถือว่าเนื้อหาของ <Verb>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่าชื่อตัวแปร
ที่อยู่ในเครื่องหมายปีกกาจะถูกแทนที่ด้วยค่าของตัวแปรที่อ้างอิง
ในเวลาที่รัน
ตัวอย่างต่อไปนี้ใช้ตัวแปรเพื่อป้อนคำกริยา
<AssignMessage name="AM-set-verb-to-dynamic-v>alu<e&q>uot; < Se>t Verb{my<_vari>abl<e}/V>erb< /Set > Assig<nToreques>t</AssignTo /Ass>ignMessage
คุณจะใช้ <Verb>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ประเภทข้อความ: คำขอ
<Version>
(บุตรของ <Set>
)
ตั้งค่าเวอร์ชัน HTTP ในคำขอ องค์ประกอบนี้จะไม่มีผลต่อคำตอบ
ค่าเริ่มต้น | ไม่มี |
ต้องระบุหรือไม่ | ไม่บังคับ |
ประเภท | สตริงหรือ variable |
องค์ประกอบหลัก |
<Set>
|
องค์ประกอบย่อย | ไม่มี |
องค์ประกอบ <Version>
ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" > na<me=>"<;policy>_name" Set < Ve>rsi<on[1>.<0|1.1|{variabl>e}]/Verb /Set /AssignMessage
ตัวอย่าง 1
ตัวอย่างต่อไปนี้ตั้งค่าหมายเลขเวอร์ชันเป็น "1.1"
<AssignMessage name="AM-set-versi>on-<1&q>uot; < Set > <Version1>.1/<Vers>io<n /Set /Ass>ignMessage
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้ใช้ตัวแปรในวงเล็บปีกกาเพื่อตั้งค่าหมายเลขเวอร์ชัน
<AssignMessage name="AM-set-versi>on-<2&q>uot; < Set > Version{m<y_versio>n}/<Vers>ion< /Set > Assig<nToreques>t</AssignTo /Ass>ignMessage
ระบบจะถือว่าเนื้อหาของ <Version>
เป็นเทมเพลตข้อความ ซึ่งหมายความว่าชื่อตัวแปรที่อยู่ในเครื่องหมายปีกกาจะถูกแทนที่ด้วยค่าของตัวแปรที่อ้างอิงในรันไทม์
คุณจะใช้ <Version>
ได้ก็ต่อเมื่อมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- ประเภทข้อความ: คำขอ
สร้างข้อความคำขอที่กำหนดเอง
คุณสามารถใช้นโยบาย AssignMessage เพื่อสร้างข้อความคำขอที่กำหนดเองได้ หลังจากสร้างคำขอที่กำหนดเองแล้ว คุณจะใช้คำขอดังกล่าวได้ในลักษณะต่อไปนี้
- เข้าถึงตัวแปรของนโยบายในนโยบายอื่นๆ
- ส่งไปยังบริการภายนอก
หากต้องการสร้างข้อความคำขอที่กำหนดเอง ให้ใช้องค์ประกอบ <AssignTo>
ในนโยบาย AssignMessage
ของคุณ ตั้งค่า createNew
เป็น "true" และระบุชื่อของข้อความใหม่ในเนื้อหา
ขององค์ประกอบ ดังตัวอย่างต่อไปนี้
<AssignMessage name="AM-assign>to-2<" AssignTo createNew="true" transport=&>quot;http" <type=&quo>t;<request"N>ameOfNewMessage/AssignTo /AssignMessage
โดยค่าเริ่มต้น Edge จะไม่ดำเนินการใดๆ กับข้อความคำขอที่กำหนดเอง หลังจากสร้างแล้ว Edge จะ ดำเนินการตามขั้นตอนด้วยคำขอเดิม หากต้องการใช้คำขอที่กำหนดเอง ให้เพิ่มนโยบาย เช่น ServiceCallout policy ลงในพร็อกซีที่ส่งคำขอที่กำหนดเองไปยังบริการภายนอกได้
ตัวอย่างต่อไปนี้สร้างข้อความคำขอที่กำหนดเอง
ตัวอย่าง 1
ตัวอย่างต่อไปนี้สร้างออบเจ็กต์คำขอที่กำหนดเองด้วย Assign Message
<AssignMessage name="AssignMessa>ge-<3" AssignTo createNew="true&>quot; type=&quo<t;request>&qu<ot;M>yCust<omReque>st/Ass<ignTo Copy Headers > <Header n>ame<=&quo>t;u<ser>-agen<t"/ > /Head<ers /Copy Set Que>ryParams QueryParam< name=">;addr<ess"{re>quest<.que>ryp<aram.>add<y}/Q>uer<yParam /QueryParams > VerbG<ET/Verb /Set IgnoreUnr>e<solvedVariable>sfalse /IgnoreUnresolvedVariables /AssignMessage
ตัวอย่างนี้
- สร้างออบเจ็กต์ข้อความคำขอใหม่ชื่อ "MyCustomRequest"
- ใน MyCustomRequest นโยบายนี้จะทำสิ่งต่อไปนี้
- คัดลอกค่าของส่วนหัว HTTP
user-agent
จากคำขอขาเข้า ไปยังข้อความใหม่ เนื่องจาก<Copy>
ใช้การอ้างอิงแบบสัมบูรณ์ไปยังตัวแปรโฟลว์user-agent
จึงไม่จำเป็นต้องระบุแอตทริบิวต์source
ให้กับ<Copy>
- ตั้งค่าพารามิเตอร์การค้นหา
address
ในข้อความที่กำหนดเองเป็นค่าของ พารามิเตอร์การค้นหาaddy
ของคำขอขาเข้า - ตั้งค่ากริยา HTTP เป็น
GET
- คัดลอกค่าของส่วนหัว HTTP
- ตั้งค่า
<IgnoreUnresolvedVariables>
เป็น "false" เมื่อ<IgnoreUnresolvedVariables>
เป็น "เท็จ" หากตัวแปรใดตัวแปรหนึ่งที่นโยบายพยายามเพิ่มไม่มีอยู่ Edge จะหยุด การประมวลผลในโฟลว์ API
ตัวอย่าง 2
ต่อไปนี้เป็นอีกตัวอย่างที่แสดงวิธีสร้างออบเจ็กต์คำขอที่กำหนดเองด้วย Assign Message
<AssignMessage name="AssignMessa>ge-<2" AssignTo createNew="true&>quot; type=&quo<t;request>&qu<ot;>partn<er.r>eque<st/As>signT<o Set VerbPOST/Verb >Payload< conten><tType=&qu>ot;<text/xml&q><uot; > re<questope>rat<ion1>0<5/operation/re>quest /Payload /Set /AssignMessage
ตัวอย่างนี้สร้างคำขอที่กำหนดเองใหม่ชื่อ "partner.request" จากนั้นจะตั้งค่า
<Verb>
และ <Payload>
ในคำขอใหม่
คุณเข้าถึงข้อความคำขอที่กำหนดเองได้ในนโยบาย AssignMessage อื่นที่เกิดขึ้นในภายหลังใน
โฟลว์ ตัวอย่างต่อไปนี้จะรับค่าของส่วนหัว user-agent
ของข้อความคำขอที่กำหนดเอง
<AssignMessage name="custom-request-1-ac>ces<s" D>isplayNamecustom-reques<t-1-access/D>isp<layName > AssignTopartn<er.reques>t/A<ssi>gnTo < Set > Head<ers Header name="user-agentCop>yCustomRequest"{MyCustomReques<t.heade>r.use<r-agent}>/He<ader> < /Headers > /Set /AssignMessage
วิดีโอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบาย AssignMessage ได้ในวิดีโอต่อไปนี้
วิดีโอ | คำอธิบาย |
---|---|
เหตุใดจึงต้องกำหนดนโยบายข้อความ | ดูประโยชน์ของการใช้นโยบาย AssignMessage เพื่อแก้ไขคำขอ API หรือ การตอบกลับโดยไม่ต้องแก้ไขโค้ดแบ็กเอนด์ |
คัดลอกองค์ประกอบ API โดยใช้นโยบาย AssignMessage | คัดลอกองค์ประกอบจากคำขอหรือการตอบกลับของ API แล้วสร้างคำขอหรือการตอบกลับใหม่ โดยใช้ออบเจ็กต์นโยบาย AssignMessage |
นำองค์ประกอบ API ออกโดยใช้นโยบาย AssignMessage | นำองค์ประกอบ API ออกและแก้ไข API ก่อนที่จะไปถึงแบ็กเอนด์เป้าหมายโดยใช้นโยบาย AssignMessage |
เพิ่มและตั้งค่า API โดยใช้นโยบาย AssignMessage | เปลี่ยนคำขอหรือการตอบกลับ API โดยการเพิ่มพารามิเตอร์การค้นหา ส่วนหัว พารามิเตอร์แบบฟอร์ม หรือ เพย์โหลดโดยใช้นโยบาย AssignMessage |
สร้างตัวแปรที่กำหนดเอง โดยใช้นโยบาย AssignMessage | ตั้งค่าตัวแปรโฟลว์ที่กำหนดเองโดยใช้นโยบาย AssignMessage และใช้ประโยชน์จากตัวแปรใน นโยบายอื่นๆ ในพร็อกซี API |
สร้างออบเจ็กต์คำขอหรือการตอบกลับใหม่ โดยใช้นโยบาย AssignMessage | สร้างออบเจ็กต์คำขอหรือการตอบกลับ API ใหม่โดยใช้นโยบาย AssignMessage ที่รันไทม์ของ API |
สร้าง API จำลอง โดยใช้นโยบาย AssignMessage | สร้าง REST API จำลองอย่างง่ายโดยเพิ่มนโยบาย AssignMessage ในโฟลว์การตอบกลับ |
ตั้งค่าหรือแก้ไข เพย์โหลดโดยใช้นโยบาย AssignMessage | แปลงคำขอ REST เป็นคำขอ SOAP โดยการตั้งค่าเพย์โหลด SOAP โดยใช้นโยบาย AssignMessage ที่รันไทม์ของ API |
รหัสข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | นโยบายไม่สามารถตั้งค่าตัวแปร ดูสตริงข้อผิดพลาดสำหรับชื่อของไฟล์ ตัวแปรที่ยังไม่ได้แก้ไข | |
steps.assignmessage.VariableOfNonMsgType |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากแอตทริบิวต์ ตัวแปรประเภทข้อความแสดงคำขอ HTTP และการตอบกลับทั้งหมด Edge ในตัว
ตัวแปรโฟลว์ |
build |
steps.assignmessage.UnresolvedVariable |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปรที่ระบุในนโยบาย "มอบหมายข้อความ" มีลักษณะดังนี้
|
build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
InvalidIndex |
หากดัชนีที่ระบุในองค์ประกอบ <Copy> และ/หรือ <Remove> ของข้อความมอบหมาย
นโยบายเป็น 0 หรือเป็นจำนวนลบ การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว
|
build |
InvalidVariableName |
หากองค์ประกอบย่อย <Name> ว่างเปล่าหรือไม่ได้ระบุในองค์ประกอบ <AssignVariable>
การทำให้พร็อกซี API ใช้งานได้ล้มเหลวเนื่องจากไม่มีชื่อตัวแปรที่ถูกต้องสำหรับ
ที่จะกำหนดค่า ต้องระบุชื่อตัวแปรที่ถูกต้อง
|
build |
InvalidPayload |
เพย์โหลดที่ระบุในนโยบายไม่ถูกต้อง |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทำให้เกิดข้อผิดพลาดขณะรันไทม์ สำหรับข้อมูลเพิ่มเติม ดูสิ่งที่คุณ ที่ต้องทราบเกี่ยวกับข้อผิดพลาดด้านนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name Matches "UnresolvedVariable" |
assignmessage.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | assignmessage.AM-SetResponse.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
ตัวอย่างกฎข้อผิดพลาด
<FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
สคีมา
นโยบายแต่ละประเภทกำหนดโดยสคีมา XML (.xsd
) โดยคุณดูสคีมานโยบาย
ได้ใน GitHub
หัวข้อที่เกี่ยวข้อง
ตัวอย่างการทำงาน ของนโยบาย AssignMessage มีอยู่ในตัวอย่างแพลตฟอร์ม API
ดูตัวอย่างขั้นสูงเพิ่มเติมเกี่ยวกับวิธีลบล้าง target.url
จาก
ProxyEndpoint ได้ที่บทความนี้ในชุมชน Apigee
หากต้องการดู "set path" ในการดำเนินการในนโยบาย ServiceCallout โปรดดูตัวอย่างการเรียนรู้จากการปฏิบัตินี้ในตัวอย่าง Apigee GitHub เพียงโคลนที่เก็บและ ทำตามวิธีการในหัวข้อนั้น ตัวอย่างนี้ใช้นโยบาย AssignMessage เพื่อตั้งค่าเส้นทางคำขอ จากนั้นใช้นโยบาย Service Callout เพื่อส่งคำขอไปยังบริการภายนอก