Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu về Apigee X. thông tin
Giới thiệu
Sử dụng mô-đun apigee-access
để truy cập vào các biến luồng của Apigee Edge trong ứng dụng Node.js. Mô-đun này có các phương thức để lấy, đặt và xoá biến. Phương thức này cũng có một phương thức tiện lợi để đặt biến số nguyên.
Biến luồng tồn tại trong ngữ cảnh của luồng proxy API. Một số biến được "tích hợp" vào Edge. Các biến khác được tạo khi chính sách thực thi và bạn có thể tạo biến của riêng mình. Biến luồng thường được dùng để truyền dữ liệu từ chính sách này sang chính sách khác và để đặt điều kiện trong luồng có điều kiện. Để biết thông tin về biến luồng, hãy xem phần Biến luồng và điều kiện.
Để biết phần giới thiệu về mô-đun apigee-access
và các tính năng khác của mô-đun này, hãy xem phần Sử dụng mô-đun apigee-access.
Ví dụ về cách hoạt động
Hãy tưởng tượng rằng một chính sách Edge chạy trên đường dẫn luồng yêu cầu sẽ đặt một biến có tên là AuthenticatedUserId
. Mã sau đây truy cập vào biến đó và in biến đó vào một nhật ký. Ngoài ra, mã này còn đặt một biến. Sau đó, bạn có thể truy cập biến đó từ một chính sách mà chúng tôi minh hoạ bên dưới.
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/');
Bạn có thể sao chép mã này vào một tệp JavaScript, triển khai mã này lên Edge rồi dùng thử. Gọi tệp server.js
. Để triển khai, hãy sử dụng:
apigeetool deploynodeapp -u username -p password -o myorg -e test -n access -d . -m server.js -b /access
Sau khi bạn triển khai ứng dụng cho Edge, hãy thêm chính sách AssignMessage với cấu hình sau vào luồng yêu cầu 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>
Tiếp theo, hãy đính kèm một chính sách AttributionMessage khác vào quy trình trước phản hồi 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>
Bạn có thể gọi proxy như sau:
curl -i http://myorg-test.apigee.net/access
Bây giờ, hãy chuyển đến trang proxy truy cập trong giao diện người dùng quản lý và hiển thị chế độ xem Develop (Phát triển). Nhấp vào Node.js Logs (Nhật ký Node.js) để xem kết quả nhật ký từ proxy. Nếu proxy được định cấu hình đúng cách, bạn sẽ thấy biến userId đã được đặt. Bạn cũng sẽ thấy tiêu đề được đặt trong đầu ra cURL trong cửa sổ dòng lệnh:
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
Phương thức
getVariable
var result = getVariable(httpRequest, name);
Lấy một biến được đặt tên.
Các tham số:
httpRequest
: Đối tượng yêu cầu đến từ mô-đun http.name
: (Chuỗi) Tên của biến cần truy xuất.
Trường hợp trả lại hàng:
Một chuỗi hoặc một số, tuỳ thuộc vào loại được đặt bằng cách sử dụng setVariable(), khi bạn tạo chuỗi hoặc số đó ở nơi khác hoặc khi một chính sách tạo chuỗi hoặc số đó. Nếu đang truy cập vào một trong các biến Edge có sẵn, bạn có thể tìm thấy danh sách các loại trong Tham chiếu biến. Đối với các loại biến do chính sách tạo, hãy tham khảo chủ đề tham khảo chính sách cụ thể.
Ví dụ:
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);
Đặt biến. Một số biến chỉ có thể đọc và phương thức setVariable() sẽ gửi một ngoại lệ nếu bạn cố gắng đặt một trong các biến đó. Để xác định biến nào chỉ có thể đọc, hãy xem Tài liệu tham khảo về biến.
Các tham số:
httpRequest
: Đối tượng yêu cầu đến từ mô-đun http.name
: (Chuỗi) Tên của biến cần truy xuất.value
: Có thể là số, Chuỗi, boolean, rỗng hoặc không xác định.
Ví dụ:
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);
Phương thức setIntVariable() là một phương thức thuận tiện, trước tiên sẽ buộc tham số giá trị thành một số nguyên, sau đó đặt tham số đó.
Các tham số:
httpRequest
: Đối tượng yêu cầu đến từ mô-đun http.name
: (Chuỗi) Tên của biến cần đặt.value
: Tham số value phải là một chuỗi hoặc số.
Ví dụ:
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
Xoá một biến được đặt tên. Lỗi khi xoá biến chỉ có thể đọc. Để xem danh sách đầy đủ các biến chỉ có thể đọc, hãy xem Tài liệu tham khảo về biến.
deleteVariable(httpRequest, name);
Các tham số:
httpRequest
: Đối tượng yêu cầu đến từ mô-đun http.name
: (Chuỗi) Tên của biến cần xoá.
Ví dụ:
apigee.deleteVariable(request, 'TestVariable'); // This will throw an exception because client.ip is a read-only variable. apigee.deleteVariable(request, 'client.ip');