Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào
tài liệu 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 Apigee Edge trong một ứng dụng Node.js. Mô-đun này có các phương thức để nhận, đặt và xoá các biến. Thư viện này cũng có một phương thức tiện lợi để đặt biến số nguyên.
Các biến luồng tồn tại trong bối cảnh của một luồng proxy API. Một số biến được "tích hợp" vào Edge. Những biến khác được tạo khi các chính sách thực thi và bạn có thể tạo biến của riêng mình. Các 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 các luồng có điều kiện. Để biết thông tin về các biến luồng, hãy xem phần Các biến và điều kiện của luồng.
Để biết thông tin 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ụ minh hoạ
Giả sử một chính sách Edge chạy trên đường dẫn luồng yêu cầu đặt một biến có tên là AuthenticatedUserId. Đoạn 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 vào biến đó từ một chính sách, như 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ã đó vào Edge và 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 triển khai ứng dụng vào Edge, hãy thêm chính sách AssignMessage với cấu hình sau vào quy trình 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 AssignMessage khác vào luồng 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 của proxy truy cập trong giao diện người dùng quản lý và mở chế độ xem Develop (Phát triển). Nhấp vào Node.js Logs (Nhật ký Node.js) để xem đầu ra nhật ký từ proxy. Nếu định cấu hình proxy đú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ả lại:
Một chuỗi hoặc một số, tuỳ thuộc vào loại được đặt bằng setVariable(), khi bạn tạo loại này ở nơi khác hoặc khi một chính sách tạo loại này. 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 Tài liệu tham khảo về 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 chiếu 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 một biến. Một số biến ở chế độ chỉ đọc và phương thức setVariable() sẽ ném một ngoại lệ nếu bạn cố gắng đặt một trong số các biến đó. Để xác định những biến 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, giá trị boolean, giá trị rỗng hoặc giá trị 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 tiện lợi, trước tiên sẽ chuyển đổi 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ố giá trị 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. Việc xoá một biến chỉ đọc là một lỗi. Để xem danh sách đầy đủ các biến chỉ đọ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');