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ó cả URL dùng để truy cập API ProxyEndpoint và URL của máy chủ phụ trợ dịch vụ do TargetEndpoint xác định.

Hãy xem video này để được 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 proxy API thiết bị đầu cuối

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 đ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à ứng dụng dùng để truy cập proxy đó 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 của cạnh. Theo mặc định, tất cả các tổ chức Apigee được tạo trên đám mây được cung cấp hai 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 cho một hoặc cả hai môi trường.
  • {base-path}{base-path} được xác định khi bạn tạo proxy API.

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

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

Nếu bạn 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 đến 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 default. Bạn có thể có nhiều tài khoản ảo máy chủ lưu trữ xác định trong môi trường của bạn.

    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 liệu proxy API được truy cập bằng cách sử dụng giao thức HTTP hay bằng Giao thức HTTPS. Để biết thông tin chi tiết về máy chủ ảo, hãy xem nội dung Giới thiệu về máy chủ ảo (Beta).
  2. Phần thứ hai của URL, /v1/Thời tiết, được xác định bởi phần tử <BasePath> trong phần tử ProxyEndpoint. Đường dẫn cơ sở phải là duy nhất đối với proxy API cho môi trường để Các 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 được xác định bằng Proxy API có Luồng điều kiện tương ứng được xác định bằng thẻ <Flows>.

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

Xác định URL của điểm cuối đích

Thẻ <RouteRule> trong một Định nghĩa ProxyEndpoint xác định mục tiêu của proxy API và được đánh giá sau tất cả các chính sách trong PreFlow, Có điều kiện và PostFlow của yêu cầu ProxyEndpoint đã xử lý.

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

  • URL trực tiếp đến dịch vụ phụ trợ.
  • Định nghĩa TargetEndpoint duy nhất.
  • Nhiều TargetEndpoints, trong đó proxy API uỷ quyền yêu cầu cho một mục tiêu điểm cuối dựa trên đ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 đó, tất cả việc 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 bất kỳ TargetEndpoint nào có tên . Ví dụ: <RouteRule> sau luôn tạo HTTP lệnh gọi đế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 đã xác định bằng ProxyEndpoint.

Một mục tiêu

Trong một định nghĩa mục tiêu, ProxyEndpoint tham chiếu đến một định nghĩa TargetEndpoint duy nhất theo tên, như được 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. Chiến lược phát hành đĩa đơn &lt;URL&gt; trong phần TargetEndpoint xác định vị trí của dịch vụ phụ trợ. trong hình trên, mục tiêu URL là http://weather.yahooapis.com.

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

Thẻ &lt;RouteRule&gt; cho phép bạn hướng một 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 biến luồng, truy vấn tham số, 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 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 trong 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 .

Quy tắc định tuyến sau đây đánh giá tiêu đề HTTP trong yêu cầu. Nếu tiêu đề HTTP routeTo có giá trị TargetEndpoint1, rồi đến yêu cầu được chuyển tiếp đến TargetEndpoint có tên là TargetEndpoint1. Nếu khô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 về tuyến đường, hãy tạo một quy tắc làm "mặc định", tức là làm tuyến đường 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 đường 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 mục Tuyến đường 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 tới điểm cuối mục tiêu bằng mục tiêu có điều kiện.

Tuyến đường rỗng

Tuyến rỗng hỗ trợ các tình huống trong đó 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ả quá trình 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