Bạn đang xem tài liệu về Apigee Edge.
Xem tài liệu
Apigee X.
Edge có một tiện ích mạnh mẽ được gọi là “API quản lý” cung cấp các dịch vụ như:
- Triển khai hoặc không triển khai các API API
- Định cấu hình máy chủ lưu trữ ảo, kho khóa và kho lưu trữ tin cậy, v.v.
- Tạo, xóa và/hoặc cập nhật các thực thể như KeyValueMaps, Sản phẩm API, Ứng dụng dành cho nhà phát triển, Nhà phát triển, Khoá người dùng, v.v.
- Đang 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ờ sự trợ giúp của các lệnh gọi API quản lý đơn giản.
Đôi khi, chúng tôi có thể cần sử dụng một hoặc nhiều dịch vụ trong số này từ các API API vào thời gian chạy. Lý do là các thực thể như KeyValueMaps, Mã truy cập OAuth, 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. chứa thông tin hữu ích dưới dạng các cặp khoá-giá trị, thuộc tính tuỳ chỉnh hoặc hồ sơ.
Ví dụ: bạn có thể lưu trữ các thông tin sau trong KeyValueMap để tăng cường bảo mật và có thể truy cập 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 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 nhà phát triển.
Tất cả thông tin này có thể được sử dụng một cách hiệu quả trong thời gian chạy để hỗ trợ hành vi động trong các chính sách hoặc mã tuỳ chỉnh trong Apigee Edge.
Mẫu
API quản lý được ưu tiên và hữu ích cho các tác vụ quản trị và không được dùng để thực hiện bất kỳ logic thời gian chạy nào trong luồng Proxy API. Điều này 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ã thông báo truy cập OAuth hoặc cho bất kỳ mục đích nào khác từ API API sẽ dẫn đến sự phụ thuộc vào Máy chủ quản lý.
- Máy chủ quản lý không thuộc thành phần thời gian chạy Edge nên có khả năng không cao.
- Máy chủ quản lý cũng có thể không được cấp phép trong cùng một mạng hoặc trung tâm dữ liệu, do đó có thể gây ra độ trễ mạng trong thời gian chạy.
- Các mục nhập trong máy chủ quản lý được lưu vào bộ nhớ đệm trong khoảng thời gian dài hơn. Vì vậy, chúng tôi có thể sẽ không xem được dữ liệu mới nhất ngay lập tức trong Proxy API nếu thực hiện thao tác ghi và đọc trong một khoảng thời gian ngắn.
- Tăng số bước nhảy của mạng trong thời gian chạy.
Trong mã mẫu 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 hoạt động. Sau đó, yêu cầu API sẽ không thành công.
Mức độ tác động
- Ra mắt phần phụ thuộc bổ sung trên các Máy chủ quản lý trong thời gian chạy. Mọi lỗi trong Máy chủ quản lý 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 API quản lý cần được lưu trữ cục bộ hoặc trong một số cửa hàng bảo mật như KVM đã mã hóa.
- Các hệ quả về hiệu suất do việc gọi dịch vụ quản lý qua mạng.
- Có thể không thấy các giá trị cập nhật ngay lập tức do bộ nhớ đệm hết hạn trong 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, Sản phẩm API, DeveloperApps, Nhà phát triển, Khoá người dùng, v.v. trong thời gian chạy. Sau đây là một số ví dụ:
- Sử dụng chính sách KeyValueMapOperations để truy cập thông tin từ KeyValueMaps. Dưới đây là mã mẫu
cho biết 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 thông tin về Sản phẩm API, Ứng dụng dành cho nhà phát triển, Nhà phát triển, Khoá người tiêu dùng, v.v. trong Proxy API, bạn có thể thực hiện một trong những việc sau:
- Nếu quy trình API Proxy của bạn có chính sáchVerifyAPIKey, thì bạn có thể truy cập thông tin bằng cách sử dụng các biến quy trình được điề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 create_by của ứng dụng dành cho nhà phát triển 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 Xác minh API, thì bạn có thể truy cập vào
hồ sơ của các Sản phẩm API, Ứng dụng của nhà phát triển, v.v. bằng cách sử dụng chính sách Thực thể truy cập và
Trích xuất biến:
- 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
appId
từ 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 quy trình API Proxy của bạn có chính sáchVerifyAPIKey, thì bạn có thể truy cập thông tin bằng cách sử dụng các biến quy trình được điề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 create_by của ứng dụng dành cho nhà phát triển bằng JavaScript: