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 tới một proxy API, bạn có thể chuyển bất kỳ hoặc tất cả thông tin sau đây, tuỳ thuộc vào cách định cấu hình proxy API:

  • Tiêu đề của yêu cầu
  • Thông số truy vấn
  • Dữ liệu biểu mẫu
  • Tải trọng XML hoặc JSON
  • URI tài nguyên

Theo mặc định, tất cả dữ liệu trong yêu cầu được truyền từ ProxyEndpoint đến TargetEndpoint mà không thay đổi. Do đó, khi TargetEndpoint gửi 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 qua dịch vụ phụ trợ. Theo mặc định, tất cả dữ liệu nhận được trong phản hồi sẽ không thay đổi đến ứng dụng đã đưa ra 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 proxy API:

Yêu cầu từ máy khách HTTP truyền qua Điểm cuối proxy đến Điểm cuối mục tiêu trên phần phụ trợ để truy cập 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 được máy chủ ảo xác định: "http://myOrg-prod.apigee.net"
  • Đường dẫn cơ sở proxy: "/v1/thời tiết"
  • TargetEndpoint được chỉ định theo quy tắc tuyến đường: "default"
  • URL mục tiêu: "http://thời.yahooapis.com"

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

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

Xin lưu ý rằng yêu cầu này chứa tài nguyên "yrss" và một tham số truy vấn, w. Edge phân tích cú pháp yêu cầu như trình bày dưới đây và chỉ định các phần của yêu cầu cho các biến luồng:

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

Biến luồng được đặt bằng các giá trị sau:

  • request.verb: "GET"
  • proxy.basepath: "/v1/thời tiết"
  • proxy.pathsuffix: "theo dữ liệu dự báo"
  • request.querystring: "w=12797282"

Sau đó, TargetEndpoint gửi yêu cầu tới dịch vụ phụ trợ bằng cách sử dụng thông tin trong yêu cầu đó:

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

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

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

Giống như 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 đều được truyền đến máy chủ phụ trợ. Ví dụ: bạn đưa ra yêu cầu bên dưới, trong đó có tiêu đề:

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

Hoặc một yêu cầu trong biểu mẫu bên dưới để bao gồm dữ liệu tiêu đề và 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 đề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 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 qua dịch vụ phụ trợ trong phản hồi sẽ được truyền không thay đổi sang ứng dụng đưa ra yêu cầu. Như đã mô tả ở trên đối với yêu cầu, bạn có thể truy cập 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 luồng.

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

Có nhiều lần bạn muốn sửa đổi dữ liệu yêu cầu trước khi gửi đế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 theo đ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 loại bỏ 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 truy cập

Bạn có thể sử dụng các chính sách để truy cập và thay đổi các phần của thông báo yêu cầu. Những 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 một quy trình thông thường, sau khi yêu cầu đã được xử lý, 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 của yêu cầu, 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 yêu cầu bằng cách đặt các biến phù 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 dùng các biến áp dụng cho thông báo phản hồi, các 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 thông báo phản hồi, sau đó áp dụng cho proxy đó một loạt chính sách dựa trên các điều kiện được đánh giá dựa trên phản hồi. Các chính sách này có thể sửa đổi hoặc biế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 phù hợp, chẳng hạn như các biến ví dụ tương ứng với tiêu đề phản hồi.

Các chính sách phổ biến để truy cập vào các 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. Những chính sách này bao gồm:

  • assignMessage chính sách: Tạo hoặc sửa đổi yêu cầu HTTP hoặc thông báo phản hồi trong quy trình proxy API. Đồng thời tạo và điền các biến luồng mới.
  • Chính sách ExtractVariables (Biến): Trích xuất nội dung từ các thông điệp, bao gồm cả tiêu đề, đường dẫn URI, tải trọng và tham số truy vấn để sử dụng trong câu lệnh điều kiện. Sau đó, chính sách này sẽ áp dụng một mẫu văn bản cho nội dung thông báo và khi tìm thấy kết quả trùng khớp, hệ thống sẽ đặt một biến được chỉ định.
  • Chính sách JSONtoXMLchính sách XMLtoJSON: Chuyển đổi thông điệp từ Ký hiệu đối tượng JavaScript (JSON) sang định dạng ngôn ngữ đánh dấu có thể mở rộng (XML) hoặc ngược lại.
  • Chính sách JavaChú thích, chính sách về JavaScript, chính sách PythonScript, Chính sách RegularExpressionProtection: Các chính sách này cho phép bạn viết một tập lệnh để truy cập vào các biến luồng chứa dữ liệu yêu cầu và phản hồi.