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

Tuyến xác định đường dẫn của một yêu cầu từ ProxyEndpoint đến TargetEndpoint. Trong tuyến này, cần có 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 giới thiệu về các tuyến, 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 chuyển đến ProxyEndpoint từ một ứng dụng, và yêu cầu đó đang được chuyển đến dịch vụ phụ trợ:

Sau khi bạn tạo proxy API trên Edge, URL mặc định mà một ứng dụng dùng để truy cập 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 cấp phép qua 2 môi trường: "test" (kiểm thử) 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 phân tích cú pháp URL để chuyển hướng yêu cầu đến đúng ProxyEndpoint. Ví dụ: URL sau đây được dùng để truy cập vào một 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 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 proxy API được truy cập bằng giao thức HTTP hay giao thức HTTPS đã 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 (Bản thử nghiệm beta).
  2. Phần thứ hai của URL, /v1/thời tiết, được xác định bằng phần tử <BasePath> trong ProxyEndpoint. Đường dẫn cơ sở phải là duy nhất đối với proxy API cho môi trường để 2 proxy API không có cùng một đường dẫn cơ sở.
  3. Phần thứ ba của URL, /forecastrss, là một tài nguyên được proxy API xác định bằng Luồng có điều kiện tương ứng được xác định bằng thẻ /forecastrss.

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 xử lý xong tất cả các chính sách trong PreFlow, Luồng có điều kiện và PostFlow của yêu cầu ProxyEndpoint.

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

  • URL trực tiếp đến một dịch vụ phụ trợ.
  • Một định nghĩa TargetEndpoint duy nhất.
  • Nhiều điểm kết thúc mục tiêu mà 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 đích rỗng, nghĩa là yêu cầu không được chuyển tiếp đến mục tiêu. 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 bất kỳ cấu hình TargetEndpoint nào có 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ột mục tiêu

Trong một định nghĩa mục tiêu duy nhất, ProxyEndpoint tham chiếu đến một định nghĩa TargetEndpoint duy nhất 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 gửi đến proxy API này đều được chuyển hướng đế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 mục tiêu là http://Thời tiết.yahooapis.com

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

Thẻ <RouteRule> cho phép bạn chuyển yêu cầu đến mục tiêu dựa trên đ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 bối cảnh như thời gian trong ngày và ngôn ngữ để xác định điểm cuối đích. Ví dụ: bạn có thể đưa một khu vực địa lý vào URL yêu cầu, chẳng hạn như Hoa Kỳ và Vương quốc Anh. 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 là TargetEndpoint1. Nếu không đúng thì 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 đường, hãy tạo một quy tắc làm "mặc định", tức là quy tắc không có điều kiện nào. Đả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 có điều kiện vì các quy tắc được đánh giá từ trên xuống trong ProxyEndpoint.

Hãy xem thêm Tuyến có điều kiệnTài liệu tham khảo về điều kiện.

Video: Xem video ngắn để tìm hiểu cách định tuyến đến điểm cuối đích bằng cách sử dụng 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 rất hữu ích khi ProxyEndpoint thực hiện tất cả các quy trình xử lý cần thiết, chẳng hạn như 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