Triển khai proxy API bằng API

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ỗi tổ chức đều có một vòng đời phát triển phần mềm (SDLC) riêng. Thông thường, bạn cần đồng bộ hoá và điều chỉnh quy trình triển khai proxy API cho phù hợp với các quy trình dùng cho các dịch vụ phụ trợ.

Bạn có thể sử dụng các phương thức API Edge được trình bày trong chủ đề này để tích hợp tính năng quản lý proxy API vào SDLC của tổ chức. Cách sử dụng phổ biến của API này là viết các tập lệnh hoặc mã triển khai proxy API, hoặc di chuyển proxy API từ môi trường này sang môi trường khác, như một phần của quy trình tự động lớn hơn cũng triển khai hoặc di chuyển các ứng dụng khác.

Edge API không đưa ra giả định về SDLC của bạn (hoặc của bất kỳ ai khác, đối với vấn đề đó). Thay vào đó, công cụ này hiển thị các chức năng nguyên tử mà nhóm phát triển của bạn có thể điều phối để tự động hoá và tối ưu hoá vòng đời phát triển API.

Để biết thông tin đầy đủ, hãy xem phần API Edge.

Để sử dụng Edge API, bạn phải xác thực chính mình trong các cuộc gọi. Bạn có thể thực hiện việc này bằng một trong các phương thức sau:

  • OAuth2 (Chỉ dành cho Đám mây công cộng)
  • SAML (Đám mây công cộng và riêng tư)
  • Xác thực cơ bản (không nên dùng; Đám mây công khai và riêng tư)

Chủ đề này tập trung vào bộ API được dùng để quản lý proxy API.

Video: Xem video ngắn này để tìm hiểu cách triển khai API.

Tương tác với API

Các bước sau đây sẽ hướng dẫn bạn thực hiện các tương tác đơn giản với các API.

Liệt kê các API trong tổ chức của bạn

Bạn có thể bắt đầu bằng cách liệt kê tất cả các proxy API trong tổ chức của mình. (Hãy nhớ thay thế các mục nhập cho EMAIL:PASSWORDORG_NAME. Để biết hướng dẫn, hãy xem phần Sử dụng API Edge.

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis

Câu trả lời mẫu:

[ "weatherapi" ]

Tải API

Bạn có thể gọi phương thức GET trên bất kỳ proxy API nào trong tổ chức của mình. Lệnh gọi này trả về danh sách tất cả bản sửa đổi hiện có của proxy API.

curl -u EMAIL:PASSWORD -H "Accept: application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi

Câu trả lời mẫu:

{
  "name" : "weatherapi",
  "revision" : [ "1" ]
}

Thông tin duy nhất mà phương thức này trả về là tên của proxy API cùng với bản sửa đổi liên quan (có số liên kết). Proxy API bao gồm một gói các tệp cấu hình. Bản sửa đổi cung cấp một cơ chế đơn giản để quản lý nội dung cập nhật cấu hình khi bạn lặp lại. Các bản sửa đổi được đánh số tuần tự, cho phép bạn huỷ bỏ một thay đổi bằng cách triển khai một bản sửa đổi trước đó của proxy API. Ngoài ra, bạn có thể triển khai bản sửa đổi proxy API vào môi trường thực tế, đồng thời tiếp tục tạo các bản sửa đổi mới của proxy API đó trong môi trường kiểm thử. Khi đã sẵn sàng, bạn có thể quảng bá bản sửa đổi cao hơn của proxy API trong môi trường thử nghiệm so với bản sửa đổi proxy API trước đó trong môi trường thực tế.

Trong ví dụ này, chỉ có một bản sửa đổi vì proxy API vừa được tạo. Khi một proxy API di chuyển trong vòng đời của cấu hình và triển khai lặp lại, số bản sửa đổi sẽ tăng theo số nguyên. Khi sử dụng các lệnh gọi API trực tiếp để triển khai, bạn có thể tuỳ ý tăng số bản sửa đổi của proxy API. Đôi khi, thực hiện những thay đổi nhỏ, có thể bạn không muốn tăng giá trị sửa đổi.

Nhận bản sửa đổi API

Phiên bản API (ví dụ: api.company.com/v1) nên thay đổi rất ít khi. Khi bạn tăng phiên bản API, điều này cho các nhà phát triển biết rằng chữ ký của giao diện bên ngoài mà API hiển thị đã có thay đổi đáng kể.

Bản sửa đổi proxy API là một số tăng dần được liên kết với một cấu hình proxy API. Dịch vụ API duy trì các bản sửa đổi của cấu hình để bạn có thể huỷ bỏ cấu hình khi có sự cố. Theo mặc định, bản sửa đổi của proxy API sẽ tự động tăng lên mỗi khi bạn nhập proxy API bằng API Nhập proxy API. Nếu bạn không muốn tăng số bản sửa đổi của proxy API, hãy sử dụng API Cập nhật bản sửa đổi proxy API. Nếu bạn đang sử dụng Maven để triển khai, hãy sử dụng các tuỳ chọn clean hoặc update, như mô tả trong trình bổ trợ Maven.

Ví dụ: bạn có thể gọi phương thức GET trên bản sửa đổi proxy API 1 để có chế độ xem chi tiết.

curl -u EMAIL:PASSWORD -H "Accept:application/json" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1

Câu trả lời mẫu

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1343178905169,
  "createdBy" : "andrew@apigee.com",
  "lastModifiedAt" : 1343178905169,
  "lastModifiedBy" : "andrew@apigee.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

Các phần tử cấu hình proxy API này được đề cập chi tiết trong Tài liệu tham khảo về cấu hình proxy API.

Triển khai API cho một môi trường

Sau khi proxy API của bạn được định cấu hình để nhận và chuyển tiếp các yêu cầu đúng cách, bạn có thể triển khai proxy API cho một hoặc nhiều môi trường. Thông thường, bạn lặp lại các proxy API trong test, sau đó quảng bá bản sửa đổi proxy API lên prod khi đã sẵn sàng. Thông thường, bạn sẽ nhận thấy mình có nhiều bản sửa đổi hơn của proxy API trong môi trường kiểm thử, chủ yếu là do bạn sẽ thực hiện ít lặp lại hơn trong môi trường thực tế.

Không thể gọi proxy API cho đến khi proxy API đó được triển khai trong một môi trường. Sau khi triển khai bản sửa đổi proxy API cho phiên bản chính thức, bạn có thể xuất bản URL prod cho các nhà phát triển bên ngoài.

Cách liệt kê các môi trường

Mỗi tổ chức trong Apigee Edge đều có ít nhất 2 môi trường: testprod. Sự khác biệt này là tuỳ ý. Mục tiêu là cung cấp cho bạn một khu vực để xác minh rằng proxy API của bạn đang hoạt động bình thường trước khi mở cho các nhà phát triển bên ngoài.

Mỗi môi trường thực ra chỉ là một địa chỉ mạng, cho phép bạn tách biệt lưu lượng truy cập giữa các proxy API mà bạn đang xử lý và những môi trường mà ứng dụng đang truy cập trong thời gian chạy.

Môi trường cũng cho phép phân tách dữ liệu và tài nguyên. Ví dụ: bạn có thể thiết lập nhiều bộ nhớ đệm trong môi trường thử nghiệm và chính thức. Chỉ các proxy API thực thi trong môi trường đó mới có thể truy cập vào những bộ nhớ đệm này.

Xem các môi trường trong tổ chức

curl -u EMAIL:PASSWORD \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments

Phản hồi mẫu

[ "test", "prod" ]

Khám phá quy trình triển khai

Triển khai là bản sửa đổi của một proxy API đã được triển khai trong một môi trường. Bạn có thể truy cập vào một proxy API ở trạng thái implementation (đã triển khai) qua mạng, tại các địa chỉ được xác định trong phần tử <VirtualHost> cho môi trường đó.

Triển khai proxy API

Không thể gọi proxy API cho đến khi triển khai xong. Dịch vụ API sẽ hiển thị các API RESTful giúp kiểm soát quá trình triển khai.

Tại mỗi thời điểm, bạn chỉ có thể triển khai một bản sửa đổi của proxy API trong một môi trường. Do đó, bản sửa đổi đã triển khai cần phải được gỡ bỏ. Bạn có thể kiểm soát việc gói mới sẽ được triển khai dưới dạng một bản sửa đổi mới hay ghi đè gói hiện có.

Bạn đang xem tài liệu về Apigee Edge.
Tham khảo tài liệu về Apigee X.
thông tin

Trước tiên, hãy huỷ triển khai bản sửa đổi hiện có. Chỉ định tên môi trường và số bản sửa đổi của proxy API mà bạn muốn huỷ triển khai:

curl -X DELETE \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

Sau đó, hãy triển khai bản sửa đổi mới. Bản sửa đổi mới của proxy API phải đã tồn tại:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments \
  -u EMAIL:PASSWORD

Triển khai liền mạch (không ngừng hoạt động)

Để giảm thiểu nguy cơ ngừng hoạt động trong quá trình triển khai, hãy sử dụng thông số override trong phương thức triển khai và đặt thông số này thành true.

Bạn không thể triển khai bản sửa đổi này của proxy API lên trên một bản sửa đổi khác. Lựa chọn đầu tiên phải luôn không được triển khai. Khi đặt override thành true, bạn cho biết rằng một bản sửa đổi của proxy API sẽ được triển khai trên bản sửa đổi hiện đã được triển khai. Kết quả là trình tự triển khai bị đảo ngược – bản sửa đổi mới được triển khai và sau khi quá trình triển khai hoàn tất, bản sửa đổi đã triển khai sẽ không được triển khai.

Ví dụ sau đây đặt giá trị override bằng cách truyền giá trị đó dưới dạng tham số biểu mẫu:

curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments" \
  -d "override=true" \
  -u EMAIL:PASSWORD

Bạn có thể tối ưu hoá quá trình triển khai hơn nữa bằng cách đặt tham số delay. Tham số delay chỉ định một khoảng thời gian (tính bằng giây) trước thời điểm mà bản sửa đổi trước đó không được triển khai. Kết quả là các giao dịch đang tiến hành có một khoảng thời gian để hoàn tất trước khi proxy API xử lý giao dịch của các giao dịch đó không được triển khai. Sau đây là những gì sẽ xảy ra với override=true và tập hợp tham số delay:

  • Bản sửa đổi 1 đang xử lý các yêu cầu.
  • Bản sửa đổi 2 đang được triển khai song song.
  • Khi Bản sửa đổi 2 được triển khai đầy đủ, lưu lượng truy cập mới sẽ được chuyển đến Bản sửa đổi 2. Không có lưu lượng truy cập mới nào được gửi đến Bản sửa đổi 1.
  • Tuy nhiên, Bản sửa đổi 1 vẫn có thể đang xử lý các giao dịch hiện tại. Khi đặt thông số delay (ví dụ: 15 giây), bạn có 15 giây cho Bản sửa đổi 1 để hoàn tất việc xử lý các giao dịch hiện có.
  • Sau khoảng thời gian trễ, Bản sửa đổi 1 sẽ không được triển khai.
curl -X POST -H "Content-type:application/x-www-form-urlencoded" \
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/e/ENV_NAME/apis/API_NAME/revisions/REVISION_NUMBER/deployments?delay=15" \
  -d "override=true" \
  -u EMAIL:PASSWORD
Tham số truy vấn Nội dung mô tả
override

Mặc định là false (hành vi triển khai bình thường: bản sửa đổi hiện có không được triển khai, sau đó bản sửa đổi mới sẽ được triển khai).

Đặt thành true để ghi đè hoạt động triển khai thông thường và cung cấp quá trình triển khai liền mạch. Bản sửa đổi hiện tại vẫn được triển khai trong khi bản sửa đổi mới cũng đang được triển khai. Khi bản sửa đổi mới được triển khai, bản sửa đổi cũ sẽ không được triển khai. Sử dụng cùng với tham số delay để kiểm soát thời điểm xảy ra quá trình không triển khai.

delay

Để cho phép hoàn tất quá trình xử lý giao dịch trên bản sửa đổi hiện có trước khi huỷ triển khai (và loại bỏ khả năng 502 Bad Gateway hoặc 504 Gateway Timeout errors), hãy đặt tham số này thành số giây mà bạn muốn trì hoãn quá trình huỷ triển khai. Không có giới hạn về số giây mà bạn có thể đặt và việc thiết lập số giây lớn sẽ không ảnh hưởng đến hiệu suất. Trong thời gian trì hoãn, sẽ không có lưu lượng truy cập mới nào được gửi đến bản sửa đổi cũ.

Giá trị mặc định là 0 (không) giây. Khi bạn đặt override thành đúng và delay là 0, thì bản sửa đổi hiện có sẽ bị huỷ triển khai ngay sau khi bản sửa đổi mới được triển khai. Giá trị âm được coi là 0 (không) giây.

Khi sử dụng override=true cùng với delay, các phản hồi HTTP 5XX trong quá trình triển khai có thể bị loại bỏ. Điều này là do cả hai bản sửa đổi proxy API sẽ được triển khai đồng thời, trong khi bản sửa đổi cũ hơn không được triển khai sau độ trễ.

Xem tất cả quá trình triển khai Bản sửa đổi API

Đôi khi, bạn cần tìm nạp danh sách tất cả các bản sửa đổi hiện đã được triển khai của proxy API.

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1/deployments \
  -u EMAIL:PASSWORD
{
  "aPIProxy" : "weatherapi",
  "environment" : [ {
    "configuration" : {
      "basePath" : "",
      "steps" : [ ]
    },
    "name" : "test",
    "server" : [ {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "90096dd1-1019-406b-9f42-fbb80cd01200"
    }, {
      "status" : "deployed",
      "type" : [ "message-processor" ],
      "uUID" : "7d6e2eb1-581a-4db0-8045-20d9c3306549"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "1619e2d7-c822-45e0-9f97-63882fb6a805"
    }, {
      "status" : "deployed",
      "type" : [ "router" ],
      "uUID" : "8a5f3d5f-46f8-4e99-b4cc-955875c8a8c8"
    } ],
    "state" : "deployed"
  } ],
  "name" : "1",
  "organization" : "org_name"
}

Phản hồi trên chứa nhiều thuộc tính dành riêng cho cơ sở hạ tầng nội bộ của Apigee Edge. Bạn sẽ không thể thay đổi các chế độ cài đặt này trừ phi đang sử dụng Apigee Edge tại chỗ.

Các thuộc tính quan trọng có trong phản hồi là organization, environment, aPIProxy, namestate. Bằng cách xem xét các giá trị thuộc tính này, bạn có thể xác nhận rằng một bản sửa đổi cụ thể của proxy API được triển khai trong một môi trường.

Xem tất cả phiên bản triển khai trong môi trường thử nghiệm

Bạn cũng có thể truy xuất trạng thái triển khai cho một môi trường cụ thể (bao gồm cả số bản sửa đổi của proxy API hiện đã được triển khai) bằng cách sử dụng lệnh gọi sau:

curl -u EMAIL:PASSWORD
  https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/test/deployments

Thao tác này sẽ trả về cùng một kết quả như trên cho mọi API được triển khai trong môi trường kiểm thử

Xem tất cả các đợt triển khai trong tổ chức của bạn

Để tìm nạp danh sách tất cả bản sửa đổi hiện đã triển khai của tất cả proxy API trong mọi môi trường, hãy sử dụng phương thức API sau:

curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/deployments \
  -u EMAIL:PASSWORD

Thao tác này sẽ trả về kết quả tương tự như trên đối với tất cả các proxy API được triển khai trong mọi môi trường.

Vì API là RESTful, nên bạn chỉ cần sử dụng phương thức POST cùng với tải trọng JSON hoặc XML dựa trên cùng một tài nguyên để tạo proxy API.

Một hồ sơ cho proxy API của bạn sẽ được tạo. Giá trị biểu diễn mặc định của proxy API là ở dạng ký hiệu đối tượng JavaScript (JSON). Dưới đây là phản hồi JSON mặc định cho yêu cầu POST ở trên, phản hồi này đã tạo một proxy API có tên weatherapi. Nội dung mô tả về từng phần tử trong hồ sơ như sau:

{
  "configurationVersion" : {
    "majorVersion" : 4,
    "minorVersion" : 0
  },
  "contextInfo" : "Revision 1 of application weatherapi, in organization {org_name}",
  "createdAt" : 1357172145444,
  "createdBy" : "you@yourcompany.com",
  "displayName" : "weatherapi",
  "lastModifiedAt" : 1357172145444,
  "lastModifiedBy" : "you@yourcompany.com",
  "name" : "weatherapi",
  "policies" : [ ],
  "proxyEndpoints" : [ ],
  "resources" : [ ],
  "revision" : "1",
  "targetEndpoints" : [ ],
  "targetServers" : [ ],
  "type" : "Application"
}

Hồ sơ proxy API được tạo minh hoạ cấu trúc đầy đủ của một proxy API:

  • APIProxy revision: Vòng lặp được đánh số tuần tự của cấu hình proxy API, do Dịch vụ API duy trì
  • APIProxy name: Tên duy nhất của proxy API
  • ConfigurationVersion: Phiên bản Dịch vụ API mà cấu hình proxy API tuân theo
  • CreatedAt: Thời gian proxy API được tạo, được định dạng theo thời gian UNIX
  • CreatedBy: Địa chỉ email của người dùng Apigee Edge đã tạo proxy API
  • DisplayName: Tên thân thiện với người dùng cho proxy API
  • LastModifiedAt: Thời điểm proxy API được tạo, được định dạng theo thời gian UNIX
  • LastModifiedBy: Địa chỉ email của người dùng Apigee Edge đã tạo proxy API
  • Policies: Danh sách các chính sách đã được thêm vào proxy API này
  • ProxyEndpoints: Danh sách ProxyEndpoints có tên
  • Resources: Danh sách các tài nguyên (JavaScript, Python, Java, GCC) có sẵn để thực thi trong proxy API này
  • TargetServers: Danh sách các TargetServers có tên (có thể tạo bằng API quản lý), dùng trong các cấu hình nâng cao nhằm mục đích cân bằng tải
  • TargetEndpoints: Danh sách TargetEndpoints đã đặt tên

Xin lưu ý rằng nhiều phần tử của cấu hình proxy API được tạo bằng phương thức POST đơn giản ở trên bị trống. Trong các chủ đề sau, bạn sẽ tìm hiểu cách thêm và định cấu hình các thành phần chính của proxy API.

Bạn cũng có thể đọc về các phần tử cấu hình này trong tài liệu tham khảo về cấu hình proxy API.

Viết tập lệnh dựa trên API

Phần Sử dụng proxy API mẫu có sẵn trên GitHub cung cấp các tập lệnh shell bao bọc công cụ triển khai Apigee. Nếu vì lý do nào đó mà bạn không thể sử dụng công cụ triển khai Python, thì bạn có thể gọi trực tiếp API này. Bạn có thể xem cả hai phương pháp trong các tập lệnh mẫu dưới đây.

Gói công cụ triển khai

Trước tiên, hãy đảm bảo rằng công cụ triển khai Python có sẵn trong môi trường cục bộ của bạn.

Sau đó, tạo một tệp để lưu giữ thông tin đăng nhập của bạn. Các tập lệnh triển khai mà bạn viết sẽ nhập các chế độ cài đặt này, giúp bạn quản lý tập trung thông tin xác thực cho tài khoản của mình. Trong mẫu Nền tảng API, tệp này được gọi là setenv.sh.

#!/bin/bash

org="Your ORG on enterprise.apigee.com"
username="Your USERNAME on enterprise.apigee.com"

# While testing, it's not necessary to change the setting below
env="test"
# Change the value below only if you have an on-premise deployment
url="https://api.enterprise.apigee.com"
# Change the value below only if you have a custom domain
api_domain="apigee.net"

export org=$org
export username=$username
export env=$env
export url=$url
export api_domain=$api_domain

Tệp ở trên cung cấp tất cả các chế độ cài đặt của bạn cho các tập lệnh shell gói công cụ triển khai.

Bây giờ, hãy tạo tập lệnh shell nhập các cài đặt đó và sử dụng chúng để gọi công cụ triển khai. (Để tham khảo ví dụ, hãy xem mẫu nền tảng API Apigee.)

#!/bin/bash

source path/to/setenv.sh

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Deploying $proxy to $env on $url using $username and $org

path/to/deploy.py -n {api_name} -u $username:$password -o $org -h $url -e $env -p / -d path/to/apiproxy

Để cuộc sống của bạn thực sự dễ dàng, hãy tạo một tập lệnh để gọi và kiểm thử API như sau:

#!/bin/bash

echo Using org and environment configured in /setup/setenv.sh

source /path/to/setenv.sh

set -x

curl "http://$org-$env.apigee.net/{api_basepath}"

Gọi API trực tiếp

Bạn nên viết các tập lệnh shell đơn giản giúp tự động hoá quy trình tải lên và triển khai proxy API.

Tập lệnh bên dưới trực tiếp gọi API quản lý. Trình này sẽ huỷ triển khai bản sửa đổi hiện có của proxy API mà bạn đang cập nhật, tạo một tệp ZIP từ thư mục /apiproxy chứa các tệp cấu hình proxy, sau đó tải lên, nhập và triển khai cấu hình.

#!/bin/bash

#This sets the name of the API proxy and the basepath where the API will be available
api=api

source /path/to/setenv.sh

echo Delete the DS_store file on OSX

echo find . -name .DS_Store -print0 | xargs -0 rm -rf
find . -name .DS_Store -print0 | xargs -0 rm -rf

echo "Enter your password for the Apigee Enterprise organization $org, followed by [ENTER]:"

read -s password

echo Undeploy and delete the previous revision

# Note that you need to explicitly update the revision to be undeployed.
# One benefit of the Python deploy tool is that it manages this for you.

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X DELETE

curl -k -u $username:$password -X DELETE "$url/v1/o/$org/apis/$api/revisions/1"

rm -rf $api.zip

echo Create the API proxy bundle and deploy

zip -r $api.zip apiproxy

echo Import the new revision to $env environment 

curl -k -v -u $username:$password "$url/v1/o/$org/apis?action=import&name=$api" -T $api.zip -H "Content-Type: application/octet-stream" -X POST

echo Deploy the new revision to $env environment 

curl -k -u $username:$password "$url/v1/o/$org/e/$env/apis/$api/revisions/1/deployments" -X POST