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

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

Khi đưa ra yêu cầu cho 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 đề của 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 đều được truyền mà 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 truyền nguyên vẹn đến ứng dụng đã tạo 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 một định nghĩa về proxy API:

Yêu cầu từ ứng dụng HTTP truyền qua Điểm cuối proxy đến Điểm cuối mục tiêu ở phần phụ trợ để truy cập vào dịch vụ HTTP. Ví dụ về điểm cuối của proxy và điểm cuối của mục tiêu được cung cấp.

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

  • Máy chủ ảo của proxy API: "default"
  • 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 do quy tắc tuyến đường chỉ định: "default"
  • URL mục tiêu: "http://weather.yahooapis.com"

Ứ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:

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 "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 luồng:

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

Các biến luồng được đặt thành 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}

Lưu ý cách tài nguyên và các tham số truy vấn được chỉ định trong yêu cầu sẽ tự động được đưa vào yêu cầu gửi đến máy chủ phụ trợ. Theo đị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 gửi đến proxy API đều được chuyển đến máy chủ phụ trợ. Ví dụ: bạn đưa ra 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 một yêu cầu ở biểu mẫu bên dưới để thê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 đều được truyề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 từ dịch vụ phụ trợ trong phản hồi sẽ được truyền mà không thay đổi đến ứng dụng đã tạo yêu cầu. Như mô tả ở trên cho 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 bài viết Tài liệu tham khảo về các biến trong luồng.

Truy cập vào 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 đến máy chủ phụ trợ. Ví dụ:

  • Để xoá thông tin bảo mật mà Edge 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ợ, ví dụ: để theo dõi người dùng hoặc thu thập số liệu phân tích.
  • Để xử lý có điều kiện yêu cầu dựa trên dữ liệu yêu cầu. Ví dụ: một proxy API có thể có nhiều TargetEndpoint. TargetEndpoint mà yêu cầu sử dụng được xác định bằng dữ liệu yêu cầu. Sau đó, bạn sẽ 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ể muốn sửa đổi dữ liệu trước khi trả về cho ứng dụng yêu cầu.

Thông báo yêu cầu cấp quyền 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. 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ư 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 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, ví dụ: các biến tương ứng với tiêu đề của yêu cầu.

Truy cập vào thông báo phản hồi

Bằng cách sử 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 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 một loạt chính sách cho thông báo đó, 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 đó 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 phản hồi bằng cách đặt các biến thích hợp, ví dụ: các biến 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ể 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:

  • Chính sách AssignMessage: Tạo hoặc sửa đổi thông báo yêu cầu hoặc phản hồi HTTP 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: Trích xuất nội dung từ các thông báo, 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 sẽ áp dụng một mẫu văn bản cho nội dung thư và khi tìm thấy nội dung trùng khớp, chính sách sẽ đặt một biến được chỉ định.
  • Chính sách JSONtoXMLchính sách XMLtoJSON: Chuyển đổi thông báo từ định dạng 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 JavaCallout, Chính sách 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.