Truy cập vào các biến luồng trong Node.js

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, đặtxoá 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');