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
Edge có một tiện ích mạnh mẽ có tên là "API quản lý", cung cấp các dịch vụ như:
- Triển khai hoặc huỷ triển khai các API Proxy
- Định cấu hình máy chủ ảo, kho khoá và kho tin cậy, v.v.
- Tạo, xoá và/hoặc cập nhật các thực thể như KeyValueMaps, API Products, Developer Apps, Developers, Consumer Keys, v.v.
- Truy xuất thông tin về các thực thể này
Bạn có thể truy cập vào các dịch vụ này thông qua một thành phần có tên là Máy chủ quản lý trong nền tảng Apigee Edge. Bạn có thể dễ dàng gọi các dịch vụ này nhờ các lệnh gọi API quản lý đơn giản.
Đôi khi, chúng ta có thể cần sử dụng một hoặc nhiều dịch vụ trong số này từ API Proxy trong thời gian chạy. Điều này là do các thực thể như KeyValueMaps, OAuth Access Tokens, API Products, Developer Apps, Developers, Consumer Keys, v.v. chứa thông tin hữu ích dưới dạng cặp khoá-giá trị, thuộc tính tuỳ chỉnh hoặc là một phần của hồ sơ.
Ví dụ: bạn có thể lưu trữ thông tin sau trong KeyValueMap để giúp thông tin đó an toàn hơn và có thể truy cập được trong thời gian chạy:
- URL mục tiêu phụ trợ
- Thuộc tính môi trường
- Thông tin xác thực bảo mật của hệ thống phụ trợ hoặc hệ thống của bên thứ ba
Tương tự, bạn có thể muốn lấy danh sách Sản phẩm API hoặc địa chỉ email của nhà phát triển trong thời gian chạy. Thông tin này sẽ có trong hồ sơ Ứng dụng của nhà phát triển.
Bạn có thể sử dụng hiệu quả tất cả thông tin này trong thời gian chạy để bật hành vi động trong các chính sách hoặc mã tuỳ chỉnh trong Apigee Edge.
Antipattern
Các API quản lý được ưu tiên và hữu ích cho các tác vụ quản trị, đồng thời không được dùng để thực hiện bất kỳ logic thời gian chạy nào trong quy trình API Proxy. Nguyên nhân là do:
- Việc sử dụng API quản lý để truy cập thông tin về các thực thể như KeyValueMaps, Mã truy cập OAuth hoặc cho bất kỳ mục đích nào khác từ API Proxy sẽ dẫn đến sự phụ thuộc vào Máy chủ quản lý.
- Máy chủ quản lý không phải là một phần của thành phần thời gian chạy Edge và do đó, chúng có thể không có tính sẵn sàng cao.
- Máy chủ quản lý cũng có thể không được cung cấp trong cùng một mạng hoặc trung tâm dữ liệu và do đó có thể gây ra độ trễ mạng trong thời gian chạy.
- Các mục trong máy chủ quản lý được lưu vào bộ nhớ đệm trong thời gian dài hơn, vì vậy, chúng tôi có thể không thấy ngay dữ liệu mới nhất trong API Proxy nếu thực hiện các thao tác ghi và đọc trong thời gian ngắn.
- Tăng số lần chuyển mạng trong thời gian chạy.
Trong mẫu mã bên dưới, lệnh gọi API quản lý được thực hiện thông qua mã JavaScript tuỳ chỉnh để truy xuất thông tin từ KeyValueMap:
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
Nếu máy chủ quản lý không hoạt động, thì mã JavaScript gọi lệnh gọi API quản lý sẽ không thành công. Sau đó, yêu cầu API sẽ không thành công.
Tác động
- Giới thiệu thêm phần phụ thuộc vào Máy chủ quản lý trong thời gian chạy. Mọi lỗi trong máy chủ Quản lý đều sẽ ảnh hưởng đến các lệnh gọi API.
- Thông tin đăng nhập của người dùng cho các API quản lý cần được lưu trữ cục bộ hoặc trong một kho lưu trữ an toàn nào đó, chẳng hạn như KVM được mã hoá.
- Ảnh hưởng đến hiệu suất do gọi dịch vụ quản lý qua mạng.
- Có thể bạn sẽ không thấy ngay các giá trị đã cập nhật do thời gian hết hạn của bộ nhớ đệm lâu hơn trong các máy chủ quản lý.
Phương pháp hay nhất
Có nhiều cách hiệu quả hơn để truy xuất thông tin từ các thực thể như KeyValueMaps, API Products, DeveloperApps, Developers, Consumer Keys, v.v. trong thời gian chạy. Dưới đây là một số ví dụ:
- Sử dụng chính sách KeyValueMapOperations để truy cập thông tin từ KeyValueMaps. Sau đây là mã mẫu cho thấy cách truy xuất thông tin từ KeyValueMap:
<!-- /antipatterns/examples/2-6.xml --> <KeyValueMapOperations mapIdentifier="urlMap" async="false" continueOnError="false" enabled="true" name="GetURLKVM"> <DisplayName>GetURLKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="urlHosti" index="2"> <Key> <Parameter>urlHost_1</Parameter> </Key> </Get> </KeyValueMapOperations>
- Để truy cập vào thông tin về Sản phẩm API, Ứng dụng của nhà phát triển, Nhà phát triển, Khoá người dùng, v.v. trong API Proxy, bạn có thể làm một trong những việc sau:
- Nếu luồng API Proxy của bạn có chính sách VerifyAPIKey, thì bạn có thể truy cập vào thông tin bằng cách sử dụng các biến luồng được điền sẵn trong chính sách này. Dưới đây là mã mẫu cho biết cách truy xuất tên và thông tin created_by của một Ứng dụng do nhà phát triển tạo bằng JavaScript:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- Nếu luồng API Proxy của bạn không có chính sách VerifyAPIKey, thì bạn có thể truy cập vào hồ sơ của API Products, Developer Apps, v.v. bằng cách sử dụng các chính sách Access Entity và Extract Variables:
- Truy xuất hồ sơ của DeveloperApp bằng chính sách AccessEntity:
<!-- /antipatterns/examples/2-8.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetDeveloperApp"> <DisplayName>GetDeveloperApp</DisplayName> <EntityType value="app"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
- Trích xuất
appIdtừ DeveloperApp bằng chính sách ExtractVariables:<!-- /antipatterns/examples/2-9.xml --> <ExtractVariables name="Extract-Developer App-Info"> <!-- The source element points to the variable populated by AccessEntity policy. The format is <policy-type>.<policy-name> In this case, the variable contains the whole developer profile. --> <Source>AccessEntity.GetDeveloperApp"</Source> <VariablePrefix>developerapp</VariablePrefix> <XMLPayload> <Variable name="appld" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/App/AppId</XPath> </Variable> </XMLPayload> </ExtractVariables>
- Truy xuất hồ sơ của DeveloperApp bằng chính sách AccessEntity:
- Nếu luồng API Proxy của bạn có chính sách VerifyAPIKey, thì bạn có thể truy cập vào thông tin bằng cách sử dụng các biến luồng được điền sẵn trong chính sách này. Dưới đây là mã mẫu cho biết cách truy xuất tên và thông tin created_by của một Ứng dụng do nhà phát triển tạo bằng JavaScript: