Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Setiap organisasi memiliki software development lifecycle (SDLC) yang unik. Sering kali Anda perlu menyinkronkan dan menyelaraskan deployment proxy API dengan proses yang digunakan untuk layanan backend.
Metode Edge API yang didemonstrasikan dalam topik ini dapat digunakan untuk mengintegrasikan pengelolaan proxy API ke dalam SDLC organisasi Anda. Penggunaan umum API ini adalah untuk menulis skrip atau kode yang men-deploy proxy API, atau memigrasikan proxy API dari satu lingkungan ke lingkungan lain, sebagai bagian dari proses otomatis yang lebih besar, yang juga men-deploy atau memigrasikan aplikasi lain.
Edge API tidak membuat asumsi tentang SDLC Anda (atau orang lain, dalam hal ini). Sebaliknya, versi ini menampilkan fungsi atomik yang dapat dikoordinasikan oleh tim pengembangan untuk mengotomatiskan dan mengoptimalkan siklus proses pengembangan API Anda.
Untuk mengetahui informasi selengkapnya, lihat Edge API.
Untuk menggunakan Edge API, Anda harus mengautentikasi diri sendiri dalam panggilan Anda. Anda dapat melakukannya dengan salah satu metode berikut:
- OAuth2 (khusus Cloud Publik)
- SAML (Cloud Publik dan Pribadi)
- Basic Auth (tidak direkomendasikan; Public dan Private Cloud)
Topik ini berfokus pada serangkaian API yang ditujukan untuk mengelola proxy API.
Video: Tonton video singkat ini untuk mempelajari cara men-deploy API.
Berinteraksi dengan API
Langkah-langkah berikut akan memandu Anda melakukan interaksi sederhana dengan API.
Mencantumkan API di organisasi Anda
Anda dapat memulai dengan mencantumkan semua proxy API di organisasi Anda. (Jangan lupa mengganti entri dengan EMAIL:PASSWORD dan ORG_NAME. Untuk mendapatkan petunjuk, lihat Menggunakan Edge API.
curl -u EMAIL:PASSWORD \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis
Contoh Respons:
[ "weatherapi" ]
Mendapatkan API
Anda dapat memanggil metode GET
pada proxy API apa pun di organisasi Anda. Panggilan ini menampilkan daftar
semua revisi proxy API yang tersedia.
curl -u EMAIL:PASSWORD -H "Accept: application/json" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi
Contoh Respons:
{ "name" : "weatherapi", "revision" : [ "1" ] }
Satu-satunya detail yang ditampilkan oleh metode ini adalah nama proxy API beserta revisi terkait, yang memiliki nomor terkait. Proxy API terdiri dari paket file konfigurasi. Revisi memberikan mekanisme ringan untuk mengelola pembaruan konfigurasi saat Anda melakukan iterasi. Revisi diberi nomor secara urut, sehingga Anda dapat mengembalikan perubahan dengan men-deploy revisi proxy API sebelumnya. Selain itu, Anda dapat men-deploy revisi proxy API ke lingkungan produksi, sambil terus membuat revisi baru proxy API tersebut di lingkungan pengujian. Jika sudah siap, Anda dapat mempromosikan revisi proxy API yang lebih tinggi dari lingkungan pengujian, dibandingkan revisi proxy API sebelumnya di lingkungan produksi.
Dalam contoh ini, hanya ada satu revisi karena proxy API baru saja dibuat. Saat proxy API bergerak melalui siklus proses konfigurasi dan deployment iteratif, nomor revisi akan bertambah berdasarkan bilangan bulat. Dengan menggunakan panggilan API langsung untuk men-deploy, Anda dapat menambahkan nomor revisi proxy API secara opsional. Terkadang saat membuat perubahan kecil, Anda mungkin tidak ingin menambah revisi.
Mendapatkan Revisi API
Versi API (misalnya, api.company.com/v1
) akan jarang berubah. Jika versi API dinaikkan, ini akan memberi tahu developer bahwa
tanda tangan antarmuka eksternal terekspos oleh API mengalami perubahan signifikan.
Revisi proxy API adalah pertambahan angka yang terkait dengan konfigurasi proxy API. Layanan API mempertahankan revisi konfigurasi sehingga Anda dapat mengembalikan konfigurasi jika terjadi masalah. Secara default, revisi proxy API secara otomatis bertambah setiap kali Anda mengimpor proxy API menggunakan API Import an API proxy. Jika Anda
tidak ingin menambah revisi proxy API, gunakan Update
proxy proxy API untuk memperbarui API. Jika Anda menggunakan Maven untuk men-deploy, gunakan opsi clean
atau
update
, seperti yang dijelaskan dalam readme plugin
Maven.
Misalnya, Anda dapat memanggil metode GET
pada proxy API revisi 1 untuk mendapatkan tampilan mendetail.
curl -u EMAIL:PASSWORD -H "Accept:application/json" \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/apis/weatherapi/revisions/1
Contoh Respons
{ "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" }
Elemen konfigurasi proxy API ini didokumentasikan secara mendetail dalam Referensi konfigurasi proxy API.
Men-deploy API ke lingkungan
Setelah proxy API dikonfigurasi untuk menerima dan meneruskan permintaan dengan benar, Anda dapat men-deploy-nya ke satu atau beberapa lingkungan. Biasanya, Anda melakukan iterasi proxy API di test
, lalu jika sudah siap,
Anda mempromosikan revisi proxy API menjadi prod
. Sering kali, Anda akan menemukan bahwa Anda memiliki
lebih banyak revisi proxy API di lingkungan pengujian, terutama karena Anda akan melakukan lebih sedikit
iterasi di lingkungan produksi.
Proxy API tidak dapat dipanggil sebelum di-deploy ke lingkungan. Setelah men-deploy revisi proxy API ke produksi, Anda dapat memublikasikan URL prod
ke developer eksternal.
Cara menampilkan daftar lingkungan
Setiap organisasi di Apigee Edge memiliki setidaknya dua lingkungan: test
dan prod
. Perbedaannya bersifat tidak tentu. Tujuannya adalah memberi Anda area untuk memverifikasi bahwa proxy API Anda berfungsi dengan baik sebelum Anda membukanya untuk developer luar.
Setiap lingkungan sebenarnya hanyalah alamat jaringan, yang memungkinkan Anda memisahkan traffic antara proxy API yang sedang Anda kerjakan, dan proxy yang sedang diakses oleh aplikasi saat runtime.
Lingkungan juga menyediakan pemisahan data dan resource. Misalnya, Anda dapat menyiapkan cache yang berbeda saat pengujian dan produksi, yang hanya dapat diakses oleh proxy API yang dijalankan di lingkungan tersebut.
Melihat lingkungan dalam organisasi
curl -u EMAIL:PASSWORD \ https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments
Contoh Respons
[ "test", "prod" ]
Pelajari deployment
Deployment adalah revisi proxy API yang telah di-deploy di lingkungan. Proxy API yang berada dalam status di-deploy dapat diakses melalui jaringan, di alamat yang ditentukan dalam elemen <VirtualHost>
untuk lingkungan tersebut.
Men-deploy proxy API
Proxy API tidak dapat dipanggil sebelum di-deploy. Layanan API mengekspos RESTful API yang memberikan kontrol atas proses deployment.
Hanya satu revisi proxy API yang dapat di-deploy di lingkungan pada waktu tertentu. Oleh karena itu, revisi yang di-deploy harus dibatalkan deploymentnya. Anda dapat mengontrol apakah paket baru akan di-deploy sebagai revisi baru atau menimpa revisi yang ada.
Anda sedang melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Batalkan deployment revisi yang ada terlebih dahulu. Tentukan nama lingkungan dan nomor revisi proxy API yang ingin Anda batalkan deployment-nya:
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
Kemudian, deploy revisi baru. Revisi baru proxy API harus sudah ada:
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
Deployment yang lancar (tanpa periode nonaktif)
Untuk meminimalkan potensi periode nonaktif selama deployment, gunakan parameter override
pada metode deployment, lalu tetapkan ke true
.
Anda tidak dapat men-deploy satu revisi proxy API di atas revisi yang lain. Fungsi pertama harus selalu
dibatalkan deploymentnya. Dengan menetapkan override
ke true
, Anda menunjukkan bahwa satu revisi proxy API harus di-deploy pada revisi yang saat ini di-deploy. Hasilnya adalah urutan deployment dibatalkan--revisi baru di-deploy, dan setelah deployment selesai, revisi yang sudah di-deploy akan dibatalkan deployment-nya.
Contoh berikut menetapkan nilai override
dengan meneruskannya sebagai parameter formulir:
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
Anda dapat mengoptimalkan deployment lebih lanjut dengan menetapkan parameter delay
. Parameter delay
menentukan interval waktu, dalam detik, yang mana revisi sebelumnya harus dibatalkan deployment. Akibatnya, transaksi yang sedang berlangsung memiliki interval waktu yang harus diselesaikan sebelum proxy API yang memproses transaksinya dibatalkan deployment-nya. Berikut adalah hal yang terjadi dengan override=true
dan kumpulan parameter delay
:
- Revisi 1 sedang menangani permintaan.
- Revisi 2 sedang di-deploy secara paralel.
- Saat Revisi 2 di-deploy sepenuhnya, traffic baru akan dikirim ke Revisi 2. Tidak ada traffic baru yang dikirim ke Revisi 1.
- Namun, Revisi 1 mungkin masih memproses transaksi yang sudah ada. Dengan menetapkan parameter
delay
(misalnya, 15 detik), Anda memberi Revisi 1 waktu 15 detik untuk menyelesaikan pemrosesan transaksi yang ada. - Setelah interval penundaan, Revisi 1 dibatalkan deployment.
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
Parameter Kueri | Deskripsi |
---|---|
override |
Defaultnya adalah Tetapkan ke |
delay |
Agar pemrosesan transaksi dapat diselesaikan pada revisi yang ada sebelum revisi tersebut dibatalkan deploymentnya, dan menghilangkan kemungkinan Defaultnya adalah 0 (nol) detik. Jika |
Jika override=true
digunakan bersama dengan delay
, respons 5XX
HTTP selama deployment dapat dihapus. Hal ini karena kedua revisi proxy API akan di-deploy secara bersamaan, dengan revisi yang lebih lama tidak di-deploy setelah penundaan.
Lihat semua deployment Revisi API
Terkadang, Anda perlu mengambil daftar semua revisi proxy API yang saat ini di-deploy.
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" }
Respons di atas berisi banyak properti khusus untuk infrastruktur internal Apigee Edge. Anda tidak dapat mengubah setelan ini, kecuali jika Anda menggunakan Apigee Edge secara lokal.
Properti penting yang terdapat dalam respons adalah organization
,
environment
, aPIProxy
, name
, dan state
. Dengan meninjau nilai properti ini, Anda dapat mengonfirmasi bahwa revisi spesifik proxy API di-deploy di suatu lingkungan.
Lihat semua deployment di lingkungan pengujian
Anda juga dapat mengambil status deployment untuk lingkungan tertentu (termasuk nomor revisi proxy API yang saat ini di-deploy) menggunakan panggilan berikut:
curl -u EMAIL:PASSWORD https://api.enterprise.apigee.com/v1/o/ORG_NAME/environments/test/deployments
Tindakan ini menampilkan hasil yang sama seperti di atas untuk setiap API yang di-deploy di lingkungan pengujian
Lihat semua deployment di organisasi Anda
Untuk mengambil daftar semua revisi semua proxy API yang saat ini di-deploy di semua lingkungan, gunakan metode API berikut:
curl https://api.enterprise.apigee.com/v1/o/ORG_NAME/deployments \ -u EMAIL:PASSWORD
Tindakan ini memberikan hasil yang sama seperti di atas untuk semua proxy API yang di-deploy di semua lingkungan.
Karena API ini RESTful, Anda cukup menggunakan metode POST
, beserta payload JSON atau XML, terhadap resource yang sama untuk membuat proxy API.
Profil untuk proxy API Anda dibuat. Representasi default dari proxy API adalah dalam notasi objek JavaScript (JSON). Berikut adalah respons JSON default untuk permintaan POST
di atas, yang membuat proxy API bernama weatherapi
. Deskripsi setiap elemen pada profil
sebagai berikut:
{ "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" }
Profil proxy API yang dihasilkan menunjukkan struktur lengkap proxy API:
APIProxy revision
: Iterasi dengan nomor urut dari konfigurasi proxy API, seperti yang dikelola oleh Layanan APIAPIProxy name
: Nama unik proxy APIConfigurationVersion
: Versi Layanan API yang sesuai dengan konfigurasi proxy APICreatedAt
: Waktu saat proxy API dibuat, diformat dalam waktu UNIXCreatedBy
: Alamat email pengguna Apigee Edge yang membuat proxy APIDisplayName
: Nama yang mudah digunakan untuk proxy APILastModifiedAt
: Waktu saat proxy API dibuat, dengan format waktu UNIXLastModifiedBy
: Alamat email pengguna Apigee Edge yang membuat proxy APIPolicies
: Daftar kebijakan yang telah ditambahkan ke proxy API iniProxyEndpoints
: Daftar ProxyEndpoint yang telah diberi namaResources
: Daftar resource (JavaScript, Python, Java, XSLT) yang tersedia untuk dijalankan di proxy API iniTargetServers
: Daftar TargetServers bernama (yang dapat dibuat menggunakan API pengelolaan), yang digunakan dalam konfigurasi lanjutan untuk tujuan load balancingTargetEndpoints
: Daftar TargetEndpoints yang bernama
Perhatikan bahwa banyak elemen konfigurasi proxy API yang dibuat menggunakan metode POST
sederhana
di atas kosong. Dalam topik berikut, Anda akan mempelajari cara menambahkan dan mengonfigurasi komponen
utama proxy API.
Anda juga dapat membaca elemen konfigurasi ini di Referensi konfigurasi proxy API.
Membuat skrip terhadap API
Contoh Menggunakan proxy API contoh, yang tersedia di GitHub menyediakan skrip shell yang menggabungkan alat deployment Apigee. Jika karena alasan tertentu Anda tidak dapat menggunakan alat deploy Python, Anda dapat memanggil API secara langsung. Kedua pendekatan tersebut ditunjukkan dalam contoh skrip di bawah.
Menggabungkan alat deployment
Pertama, pastikan alat deployment Python tersedia di lingkungan lokal Anda.
Kemudian, buat file untuk menyimpan kredensial Anda. Skrip deployment yang Anda tulis akan mengimpor setelan ini, sehingga membantu Anda mengelola kredensial untuk akun secara terpusat. Dalam contoh Platform API, file ini disebut 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
File di atas menyediakan semua setelan Anda untuk skrip shell yang menggabungkan alat deployment.
Sekarang buat skrip shell yang mengimpor setelan tersebut dan menggunakannya untuk memanggil alat deployment. (Sebagai contoh, lihat contoh platform 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
Untuk memudahkan Anda, buat juga skrip untuk memanggil dan menguji API, sebagai berikut:
#!/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}"
Langsung memanggil API
Ada baiknya Anda menulis skrip shell sederhana yang mengotomatiskan proses upload dan deployment proxy API.
Skrip di bawah ini langsung memanggil API pengelolaan. Tindakan ini membatalkan deployment revisi proxy API yang ada yang sedang Anda update, membuat file ZIP dari direktori /apiproxy
yang berisi file konfigurasi proxy, lalu mengupload, mengimpor, dan men-deploy konfigurasi.
#!/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