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

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

Tuyến đường xác định đường dẫn của một yêu cầu từ ProxyEndpoint đến TargetEndpoint. Trong tuyến đường này 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 thông tin 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 đến dịch vụ phụ trợ:

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

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 2 môi trường: "test" và "prod". Khi triển khai một 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 một yêu cầu đến Edge, Edge sẽ phân tích cú pháp URL để chuyển yêu cầu đến ProxyEndpoint chính xác. 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 đến một máy chủ lưu trữ ả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à một proxy API được 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 bằng 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 (Beta).
  2. Phần thứ hai của URL, /v1/weather, đượ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 đường dẫn cơ sở.
  3. Phần thứ ba của URL, /forecastrss, là một tài nguyên do API proxy xác định bằng Conditional Flow tương ứng do thẻ <Flows> xác định.

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

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

Thẻ <RouteRule> trong định nghĩa ProxyEndpoint sẽ xác định đích đến của proxy API và được đánh giá sau khi tất cả cá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 như sau:

  • Một URL trực tiếp đến dịch vụ phụ trợ.
  • Một định nghĩa TargetEndpoint duy nhất.
  • Nhiều TargetEndpoint nơi API proxy uỷ quyền yêu cầu đến một điểm cuối đích dựa trên một điều kiện.
  • Lộ trình hoặc đích đến rỗng, tức là yêu cầu không được chuyển tiếp đến đích đến. Thay vào đó, tất cả 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 một video ngắn để tìm hiểu thêm về các đ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 các chính sách vào những luồng được xác định bằng ProxyEndpoint.

Mục tiêu duy nhất

Trong một định nghĩa mục tiêu duy nhất, ProxyEndpoint tham chiếu 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 đế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 một yêu cầu đến đích 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 vùng.

Quy tắc tuyến đường sau đây đánh giá một tiêu đề HTTP trong 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 định tuyến, hãy tạo một quy tắc làm "mặc định", tức là một quy tắc định tuyến không có điều kiện. Đảm bảo rằng quy tắc tuyến đường mặc định được xác định cuối cùng trong danh sách các 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 Các tuyến đường có điều kiệnTài liệu tham khảo về điều kiện.

Video: Xem một 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 đường 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ả 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 đường rỗng:

<RouteRule name="GoNowhere"/>

Tìm hiểu thêm