Tìm hiểu về tuyến đường

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

Một tuyến xác định đường dẫn của một yêu cầu từ ProxyEndpoint đến TargetEndpoint. Tuyến này có trong tuyến này là URL dùng để truy cập vào API ProxyEndpoint và URL của dịch vụ phụ trợ do TargetEndpoint xác định.

Hãy xem video này để biết phần giới thiệu về các tuyến đường, mô tả mối quan hệ giữa ProxyEndpoint và TargetEndpoint.

Xác định URL của điểm cuối proxy API

Hình ảnh sau đây cho thấy một yêu cầu đến ProxyEndpoint từ một ứng dụng và yêu cầu đó được chuyển hướng đến dịch vụ phụ trợ:

Sau khi bạn tạo proxy API trên Edge, URL mặc định mà ứng dụng dùng để truy cập vào proxy đó sẽ có dạng như sau:

http://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

https://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

trong đó:

  • {org-name} là tên tổ chức của bạn. Tên này được tạo khi bạn tạo tài khoản trên Edge.
  • {env-name} là tên môi trường Edge. Theo mặc định, tất cả các tổ chức Apigee được tạo trên đám mây đều được cung cấp hai môi trường: "test" và "prod". Khi triển khai proxy API, bạn có thể chọn triển khai proxy đó cho một hoặc cả hai môi trường.
  • {base-path}{resource-path} được xác định khi bạn tạo proxy API.

Khi có yêu cầu đến Edge, Edge sẽ phân tích cú pháp URL để chuyển hướng yêu cầu đến ProxyEndpoint chính xác. Ví dụ: URL sau đây được dùng để truy cập vào proxy API trên Edge:

http://myOrg-prod.apigee.net/v1/weather/forecastrss

Nếu kiểm tra định nghĩa ProxyEndpoint cho proxy API trong hình trên, bạn có thể thấy cách Edge phân tích cú pháp URL này:

  1. Phần miền của URL, http://myOrg-prod.apigee.net, tương ứng với một máy chủ ảo trên Edge. Trong định nghĩa ProxyEndpoint ở trên, proxy API sử dụng thẻ <VirtualHost> để tham chiếu đến một máy chủ ảo có tên là default. Bạn có thể xác định nhiều máy chủ ảo trong môi trường của mình.

    Máy chủ ảo xác định các miền và cổng mà proxy API hiển thị. Máy chủ ảo cũng xác định xem bạn truy cập vào proxy API bằng giao thức HTTP hay giao thức HTTPS được mã hoá. Để biết thông tin chi tiết về máy chủ ảo, hãy xem bài viết Giới thiệu về máy chủ ảo (Thử nghiệm).
  2. Phần thứ hai của URL, /v1/weather, được xác định bởi phần tử <BasePath> trong ProxyEndpoint. Đường dẫn cơ sở phải là duy nhất cho proxy API của môi trường để hai proxy API không có cùng đường dẫn cơ sở.
  3. Phần thứ ba của URL, /forecastrss, là một tài nguyên do proxy API xác định với Luồng có điều kiện tương ứng do thẻ <Flows> xác định.

Video: Xem video ngắn để tìm hiểu thêm về điểm cuối proxy API.

Xác định URL của điểm cuối mục tiêu

Thẻ <RouteRule> trong định nghĩa ProxyEndpoint xác định mục tiêu của proxy API và được đánh giá sau khi tất cả chính sách trong PreFlow, Conditional Flows và PostFlow của yêu cầu ProxyEndpoint được xử lý.

ProxyEndpoint có thể xác định mục tiêu là:

  • URL trực tiếp đến dịch vụ phụ trợ.
  • Một định nghĩa TargetEndpoint duy nhất.
  • Nhiều TargetEndpoints, trong đó proxy API uỷ quyền yêu cầu đến một điểm cuối mục tiêu dựa trên một điều kiện.
  • Tuyến hoặc mục tiêu rỗng, nghĩa là yêu cầu không được chuyển tiếp đến một đích. Thay vào đó, toàn bộ quá trình xử lý yêu cầu và tạo phản hồi đều diễn ra trên Edge.

Video: Xem video ngắn để tìm hiểu thêm về điểm cuối mục tiêu.

URL trực tiếp

ProxyEndpoint có thể trực tiếp gọi một dịch vụ phụ trợ, bỏ qua mọi cấu hình TargetEndpoint được đặt tên. Ví dụ: <RouteRule> sau đây luôn thực hiện lệnh gọi HTTP đến http://api.mycompany.com/myAPI:

<RouteRule name="default">
  <URL>http://api.mycompany.com/myAPI</URL> 
</RouteRule>

Tuy nhiên, vì không có TargetEndpoint nên bạn chỉ có thể thêm chính sách vào các luồng do ProxyEndpoint xác định.

Mục tiêu đơn

Trong một định nghĩa mục tiêu, ProxyEndpoint tham chiếu đến một định nghĩa TargetEndpoint theo tên, như minh hoạ trong hình trên:

<RouteRule name="default">
  <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

Tất cả các yêu cầu đến proxy API này đều được chuyển đến cùng một định nghĩa TargetEndpoint. Thẻ <URL> trong TargetEndpoint xác định vị trí của dịch vụ phụ trợ. Trong hình trên, URL đích là http://weather.yahooapis.com.

Mục tiêu có điều kiện

Thẻ <RouteRule> cho phép bạn chuyển hướng yêu cầu đến một mục tiêu dựa trên một điều kiện. Bạn có thể sử dụng các biến luồng, tham số truy vấn, tiêu đề HTTP, nội dung thông báo hoặc thông tin theo ngữ cảnh như thời gian trong ngày và ngôn ngữ để xác định điểm cuối mục tiêu. Ví dụ: bạn có thể thêm một khu vực địa lý, chẳng hạn như Hoa Kỳ và Vương quốc Anh, vào URL yêu cầu. Sau đó, bạn có thể định tuyến yêu cầu đến một điểm cuối mục tiêu dựa trên khu vực.

Quy tắc định tuyến sau đây đánh giá tiêu đề HTTP trong một yêu cầu. Nếu tiêu đề HTTP routeTo có giá trị TargetEndpoint1, thì yêu cầu sẽ được chuyển tiếp đến TargetEndpoint có tên TargetEndpoint1. Nếu không, yêu cầu sẽ được chuyển tiếp đến TargetEndpoint2.

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
 <TargetEndpoint>TargetEndpoint2</TargetEndpoint>
</RouteRule>

Nếu bạn có nhiều quy tắc tuyến, hãy tạo một quy tắc làm "mặc định", tức là một quy tắc tuyến không có điều kiện. Hãy đảm bảo rằng quy tắc định tuyến mặc định được xác định cuối cùng trong danh sách Tuyến đường có điều kiện vì các quy tắc được đánh giá từ trên xuống trong ProxyEndpoint.

Ngoài ra, hãy xem Tuyến có điều kiệnTham chiếu điều kiện.

Video: Xem video ngắn để tìm hiểu cách định tuyến đến một điểm cuối mục tiêu bằng cách sử dụng các mục tiêu có điều kiện.

Tuyến đường rỗng

Tuyến rỗng hỗ trợ các trường hợp mà thông báo yêu cầu không cần được chuyển tiếp đến TargetEndpoint. Điều này hữu ích khi ProxyEndpoint thực hiện tất cả các hoạt động xử lý cần thiết, ví dụ: bằng cách sử dụng JavaScript để gọi một dịch vụ bên ngoài.

Ví dụ sau đây xác định một tuyến rỗng:

<RouteRule name="GoNowhere"/>

Tìm hiểu thêm