คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
บทนำ
ใช้โมดูล apigee-access
เพื่อเข้าถึงขั้นตอน Apigee Edge
ในแอปพลิเคชัน Node.js โมดูลนี้มีวิธีการสำหรับการรับ การตั้งค่า และการลบตัวแปร และยังมีวิธีที่สะดวกสำหรับการตั้งค่าตัวแปรจำนวนเต็มด้วย
ตัวแปรโฟลว์จะอยู่ในบริบทของโฟลว์พร็อกซี API ตัวแปรบางตัวเป็น "ในตัว" ถึง Edge ส่วนตัวแปรอื่นจะสร้างขึ้นเมื่อนโยบายทำงาน และคุณสร้างตัวแปรของคุณเองได้ โฟลว์ โดยทั่วไปจะใช้ตัวแปรเพื่อส่งข้อมูลจากนโยบายหนึ่งไปยังอีกนโยบายหนึ่งเพื่อการตั้งค่าเงื่อนไข ในขั้นตอนแบบมีเงื่อนไข สำหรับข้อมูลเกี่ยวกับตัวแปรโฟลว์ โปรดดูตัวแปรโฟลว์และ ของ Google
สำหรับข้อมูลเบื้องต้นเกี่ยวกับโมดูล apigee-access
และฟีเจอร์อื่นๆ ของโมดูลนี้ โปรดดู
การใช้โมดูลการเข้าถึง Apigee
ตัวอย่างการทำงาน
สมมติว่านโยบาย Edge ที่ทำงานบนเส้นทางโฟลว์คำขอตั้งค่าตัวแปรที่เรียกว่า
AuthenticatedUserId
โค้ดต่อไปนี้เข้าถึงตัวแปรดังกล่าวและพิมพ์ตัวแปร
log นอกจากนี้ โค้ดนี้จะกำหนดตัวแปร จากนั้นคุณจะเข้าถึงตัวแปรนั้นจากนโยบายได้
ซึ่งเราจะอธิบายไว้ด้านล่าง
var http = require('http'); var apigee = require('apigee-access'); http.createServer(function (request, response) { // The request parameter must be a request object that came from the http module var userId = apigee.getVariable(request, 'AuthenticatedUserId'); apigee.setVariable(request, "custom.foo", "Bar"); console.log('Authenticated Apigee User ID is %s', userId); response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8124); console.log('Server running at http://127.0.0.1:8124/');
คุณอาจคัดลอกโค้ดนี้ลงในไฟล์ JavaScript, ติดตั้งใช้งานใน Edge แล้วลองใช้งานได้เลย เรียกใช้
ไฟล์ server.js
หากต้องการติดตั้งใช้งาน ให้ใช้
apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access
หลังจากทำให้แอปพลิเคชันใช้งานได้ใน Edge แล้ว ให้เพิ่มนโยบาย AssignMessage พร้อมข้อมูลต่อไปนี้ การกำหนดค่าเป็นขั้นตอนคำขอ ProxyEndpoint
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="AddUserId"> <DisplayName>AddUserId</DisplayName> <FaultRules/> <Properties/> <AssignVariable> <Name>AuthenticatedUserId</Name> <Value>ntesla</Value> <Ref/> </AssignVariable> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
จากนั้นแนบนโยบาย AssignMessage อีกรายการไปยังขั้นตอนการตอบสนองล่วงหน้าของ TargetEndpoint:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AssignMessage async="false" continueOnError="false" enabled="true" name="SetHeader"> <DisplayName>SetHeader</DisplayName> <FaultRules/> <Properties/> <Set> <Headers> <Header name="MySpecialHeader">{custom.foo}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
คุณสามารถเรียกพร็อกซีได้ด้วยวิธีต่อไปนี้
curl -i http://myorg-test.apigee.net/access
จากนั้นให้ไปที่หน้าของพร็อกซีการเข้าถึงใน UI การจัดการ แล้วเรียก มุมมองพัฒนา คลิกบันทึก Node.js เพื่อดูเอาต์พุตบันทึกจาก พร็อกซี หากกำหนดค่าพร็อกซีถูกต้อง คุณจะเห็นว่ามีการตั้งค่าตัวแปร userId นอกจากนี้ คุณจะเห็นว่าส่วนหัวได้รับการตั้งค่าในเอาต์พุต cURL ในหน้าต่างเทอร์มินัลแล้วดังนี้
HTTP/1.1 200 OK Content-Type: text/plain Date: Tue, 27 05 2014 23:20:52 GMT MySpecialHeader: Bar Content-Length: 12 Connection: keep-alive
เมธอด
getVariable
var result = getVariable(httpRequest, name);
รับตัวแปรที่มีชื่อ
พารามิเตอร์
httpRequest
: ออบเจ็กต์คำขอที่มาจากโมดูล httpname
: (สตริง) ชื่อของตัวแปรที่จะดึงข้อมูล
การคืนสินค้า:
สตริงหรือตัวเลขขึ้นอยู่กับประเภทที่ตั้งค่าไว้โดยใช้ setVariable() คุณสร้างไว้ในที่อื่น หรือเมื่อนโยบายสร้างขึ้นมา หากคุณกำลังเข้าถึงหนึ่งใน คุณสามารถดูรายการประเภทตัวแปร Edge ได้ทันทีในข้อมูลอ้างอิงตัวแปร สำหรับประเภทตัวแปร ที่สร้างโดยนโยบาย โปรดดูหัวข้ออ้างอิงนโยบายที่เฉพาะเจาะจง
ตัวอย่างเช่น
var apigee = require('apigee-access'); // "httpRequest" must be a request object that came from the http module var val1 = apigee.getVariable(request, 'TestVariable'); var val2 = apigee.getVariable(request, 'request.client.ip');
setVariable
setVariable(httpRequest, name, value);
ตั้งค่าตัวแปร ตัวแปรบางตัวเป็นแบบอ่านอย่างเดียว และเมธอด setVariable() จะแสดงข้อผิดพลาด ให้ยกเว้นในกรณีที่คุณพยายามตั้งค่าบางอย่าง หากต้องการดูว่าตัวแปรใดเป็นแบบอ่านอย่างเดียว ให้ดูที่ ตัวแปร ข้อมูลอ้างอิง
พารามิเตอร์
httpRequest
: ออบเจ็กต์คำขอที่มาจากโมดูล httpname
: (สตริง) ชื่อของตัวแปรที่จะดึงข้อมูลvalue
: สามารถเป็นตัวเลข สตริง บูลีน ค่าว่าง หรือไม่ได้กำหนด
ตัวอย่างเช่น
var apigee = require('apigee-access'); apigee.setVariable(request, 'TestVariable', 'bar'); // This will throw an exception because client.ip is read-only. apigee.setVariable(request, 'client.ip');
setIntVariable
setIntVariable(httpRequest, name, value);
เมธอด setIntVariable() เป็นวิธีอำนวยความสะดวกในการเชื่อมโยงพารามิเตอร์ค่าเป็น จำนวนเต็มแล้วตั้งค่า
พารามิเตอร์
httpRequest
: ออบเจ็กต์คำขอที่มาจากโมดูล httpname
: (สตริง) ชื่อของตัวแปรที่จะตั้งค่าvalue
: พารามิเตอร์ค่าต้องเป็นสตริงหรือตัวเลข
ตัวอย่างเช่น
var apigee = require('apigee-access'); // Convert "123" to an integer and set it apigee.setIntVariable(request, 'TestVariable', '123'); // Use something that's already a number apigee.setIntVariable(request, 'TestVariable2', 42);
deleteVariable
ลบตัวแปรที่มีชื่อ การลบตัวแปรแบบอ่านอย่างเดียวเป็นข้อผิดพลาด เพื่อการเรียนรู้ที่สมบูรณ์ รายการตัวแปรแบบอ่านอย่างเดียว โปรดดูการอ้างอิงตัวแปร
deleteVariable(httpRequest, name);
พารามิเตอร์
httpRequest
: ออบเจ็กต์คำขอที่มาจากโมดูล httpname
: (สตริง) ชื่อของตัวแปรที่จะลบ
ตัวอย่างเช่น
apigee.deleteVariable(request, 'TestVariable'); // This will throw an exception because client.ip is a read-only variable. apigee.deleteVariable(request, 'client.ip');