Biến yêu cầu và phản hồi

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Khi gửi yêu cầu đến một proxy API, bạn có thể truyền bất kỳ hoặc tất cả thông tin sau, tuỳ thuộc vào cách định cấu hình proxy API:

  • Tiêu đề yêu cầu
  • Tham số truy vấn
  • Dữ liệu biểu mẫu
  • Gói dữ liệu XML hoặc JSON
  • URI tài nguyên

Theo mặc định, tất cả dữ liệu trong một yêu cầu được truyền không thay đổi từ ProxyEndpoint đến TargetEndpoint. Do đó, khi TargetEndpoint đưa ra yêu cầu đến máy chủ phụ trợ, tất cả thông tin trong yêu cầu ban đầu sẽ được chuyển đến dịch vụ phụ trợ.

Điều này cũng đúng với phản hồi mà Edge nhận được từ dịch vụ phụ trợ. Theo mặc định, tất cả dữ liệu nhận được trong phản hồi sẽ được chuyển nguyên trạng đến ứng dụng đã tạo yêu cầu.

Dữ liệu yêu cầu được chuyển đến máy chủ phụ trợ như thế nào?

Hình ảnh sau đây cho thấy định nghĩa về proxy API:

Yêu cầu từ máy khách HTTP truyền Điểm cuối proxy đến Điểm cuối mục tiêu trên phần phụ trợ để truy cập vào dịch vụ HTTP. Ví dụ về điểm cuối proxy và điểm cuối đích.

Đối với proxy API này:

  • Máy chủ ảo proxy API: "mặc định"
  • Miền do máy chủ ảo xác định: "http://myOrg-prod.apigee.net"
  • Đường dẫn cơ sở của proxy: "/v1/weather"
  • TargetEndpoint được chỉ định theo quy tắc về tuyến đường: "default"
  • URL mục tiêu: "http://weather.yahooapis.com"

Một ứng dụng khách gửi một yêu cầu GET đến proxy API bằng cách sử dụng lệnh curl sau:

curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

Lưu ý rằng yêu cầu này chứa tài nguyên "forecastrss" và một tham số truy vấn, w. Edge phân tích cú pháp yêu cầu như minh hoạ bên dưới và chỉ định các phần của yêu cầu cho các biến flow:

{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}

Các biến flow được đặt bằng các giá trị sau:

  • request.verb: "GET"
  • proxy.basepath: "/v1/weather"
  • proxy.pathsuffix: "forecastrss"
  • request.querystring: "w=12797282"

Sau đó, TargetEndpoint sẽ gửi một yêu cầu đến dịch vụ phụ trợ bằng cách sử dụng thông tin từ yêu cầu:

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

Hãy lưu ý cách các tham số tài nguyên và truy vấn được chỉ định trong yêu cầu tự động được đưa vào yêu cầu gửi đến máy chủ phụ trợ. Từ định nghĩa của TargetEndpoint, yêu cầu sẽ có dạng:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

Giống như các tham số truy vấn, mọi tiêu đề hoặc tham số biểu mẫu mà bạn đưa vào yêu cầu đến proxy API sẽ được chuyển đến máy chủ phụ trợ. Ví dụ: bạn tạo yêu cầu bên dưới có chứa một tiêu đề:

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

Hoặc yêu cầu trong biểu mẫu bên dưới để bao gồm tiêu đề và dữ liệu biểu mẫu:

curl -X POST -H "Content-type:application/json" -d \
  '{"email" : "janetutorialxml@example.com",
    "firstName" : "Jane",
    "lastName" : "Tutorial",
    "userName" : "jtutorialxml"
  }' \
  http://myOrg-prod.apigee.net/v1/register/user

Trong cả hai ví dụ, tiêu đề và dữ liệu biểu mẫu được chuyển không thay đổi đến dịch vụ phụ trợ. Các tiêu đề được biểu thị bằng các biến luồng như request.headers.countrequest.headers.names. Dữ liệu biểu mẫu được biểu thị bằng các biến flow (luồng) như request.formparam.countrequest.formparam.names.

Dữ liệu phản hồi được trả về như thế nào?

Theo mặc định, tất cả dữ liệu mà Edge nhận được từ dịch vụ phụ trợ trong phản hồi sẽ được chuyển không thay đổi đến ứng dụng đã tạo ra yêu cầu. Như mô tả ở trên đối với yêu cầu, bạn có thể truy cập vào dữ liệu được trả về trong phản hồi thông qua các biến luồng trên Edge. Để biết thêm thông tin, hãy xem Tài liệu tham khảo về biến flow.

Truy cập dữ liệu yêu cầu và phản hồi trong một proxy API

Có nhiều trường hợp bạn muốn sửa đổi dữ liệu yêu cầu trước khi gửi dữ liệu đó đến máy chủ phụ trợ. Ví dụ:

  • Để xoá thông tin bảo mật mà Edge sử dụng để xác thực các yêu cầu. Dịch vụ phụ trợ không yêu cầu thông tin đó.
  • Để thêm dữ liệu được gửi đến dịch vụ phụ trợ, chẳng hạn như để theo dõi người dùng hoặc thu thập số liệu phân tích.
  • Để xử lý yêu cầu có điều kiện dựa trên dữ liệu yêu cầu. Ví dụ: một proxy API có thể có nhiều TargetEndpoints. TargetEndpoint mà yêu cầu sử dụng được xác định theo dữ liệu yêu cầu. Sau đó, bạn xoá dữ liệu đó khỏi yêu cầu trước khi gửi đến dịch vụ phụ trợ.

Điều này cũng đúng đối với dữ liệu trong phản hồi. Trong quá trình xử lý phản hồi, proxy API có thể cần sửa đổi dữ liệu trước khi trả về ứng dụng yêu cầu.

Thông báo yêu cầu quyền truy cập

Bạn có thể sử dụng chính sách để truy cập và thay đổi một số phần của thông báo yêu cầu. Các phần này bao gồm:

  • Tiêu đề
  • Tham số truy vấn
  • Tham số biểu mẫu
  • Địa chỉ IP nguồn
  • Nội dung thông báo HTTP

Trong luồng thông thường, sau khi xử lý yêu cầu, proxy sẽ gửi yêu cầu đã chuyển đổi đến mục tiêu.

Các chính sách có thể kiểm tra các biến yêu cầu, sau đó chuyển đổi hoặc từ chối yêu cầu dựa trên nội dung của các biến đó. Các chính sách sẽ chuyển đổi yêu cầu bằng cách đặt các biến thích hợp, chẳng hạn như các biến ví dụ tương ứng với tiêu đề của yêu cầu.

Truy cập vào tin nhắn phản hồi

Khi sử dụng các biến áp dụng cho thông báo phản hồi, chính sách có thể truy cập vào các thành phần của thông báo, bao gồm tiêu đề, tham số truy vấn và tham số biểu mẫu, địa chỉ IP nguồn, nội dung thông báo HTTP, v.v.

Proxy nhận được một thông báo phản hồi, sau đó áp dụng cho thông báo đó một loạt chính sách, dựa trên các điều kiện được đánh giá trên phản hồi, có thể sửa đổi hoặc chuyển đổi phản hồi.

Các chính sách có thể kiểm tra các biến phản hồi, sau đó biến đổi hoặc từ chối yêu cầu dựa trên nội dung của các biến đó. Các chính sách chuyển đổi phản hồi bằng cách đặt các biến thích hợp, chẳng hạn như các biến ví dụ tương ứng với các tiêu đề phản hồi.

Các chính sách chung để truy cập vào biến luồng

Edge xác định một số chính sách mà bạn có thể sử dụng để xử lý dữ liệu yêu cầu và phản hồi. Các chính sách này bao gồm: