GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Memperbarui API Portal Pengembang Apigee

Pendahuluan

Apigee adalah platform manajemen API yang menawarkan Portal Pengembang terintegrasi untuk mendokumentasikan titik akhir yang terbuka di proxy API. Hal ini memungkinkan pengembang berinteraksi dengan API dengan mudah dan membiasakan diri tanpa terlalu banyak kerumitan.

Semua API dapat berubah, dan oleh karena itu, Portal Pengembang Apigee perlu diubah untuk mencerminkan pembaruan ini. Namun, memperbarui spesifikasi API secara manual menjadi tugas yang rumit dengan cepat.

Artikel ini menjelaskan cara mengotomatiskan proses pembaruan API di Apigee.

Prasyarat

  • Portal Pengembang Apigee

Pembaruan Otomatis API Portal Pengembang Apigee

Tiga hal yang diperlukan untuk membuat spesifikasi API muncul di Portal Pengembang Apigee:

  • Spesifikasi Open API , disingkat sebagai file spesifikasi. Dalam kasus kami, kami menggunakan Pet Store klasik.
  • Produk API – ini adalah kumpulan API. Karena Portal Pengembang Apigee bekerja dengan mereka, kami akan membuatnya untuk menampilkan API kami. Untuk tujuan demonstrasi, produk API kami hanya akan memiliki satu API.
  • Portal Pengembang yang sudah ada untuk memublikasikan atau memperbarui Produk dan spesifikasi API.

Bagian di bawah menjelaskan cara mengotomatiskan proses pembaruan API di Apigee.

Langkah 1:Mengunggah Spesifikasi API

Saat ini, Apigee tidak menyediakan cara apa pun untuk mengunggah spesifikasi API melalui Admin API. Gunakan UI Apigee untuk menambahkan atau memperbarui spesifikasi API.

1. Pilih Impor File pilihan untuk mengimpor spesifikasi Pet Store. Buka Chrome DevTools (atau yang setara) saat melakukannya.

2. Anda akan melihat spesifikasi API (dalam contoh ini, 'petshop') terdaftar, seperti pada gambar di bawah ini.

3. Spesifikasi API berhasil diunggah. Mari kita lihat apa yang terjadi di latar belakang dengan merujuk ke Jaringan tab di Chrome DevTools.

Paling banyak, tiga panggilan API diperlukan untuk menambahkan spesifikasi API:

  • POST
  • PUT
  • GET

POSTING, PUT, dan DAPATKAN Panggilan API

Di bawah ini adalah panggilan API pertama:

POST https://apigee.com/dapi/api/organizations/lukeb-eval/specs/doc
{
  "folder": "173137",
  "kind": "Doc",
  "name": "petstore"
}
  • folder :ID folder spesifikasi organisasi Anda. Ini akan selalu sama karena setiap organisasi memiliki satu folder spesifikasi dan tidak pernah berubah.
  • kind :Dalam hal ini akan selalu Doc karena kami sedang mengunggah dokumen.
  • name :Nama spesifikasi API. Meskipun tidak diterapkan, gunakan nama yang unik, jika tidak, akan membingungkan saat melihat spesifikasi API.

Hasil dari panggilan ini adalah pembuatan spesifikasi API kosong dengan nama yang ditentukan. Tanggapan yang diharapkan dari Apigee adalah sebagai berikut:

{
	"id": "299536",
	"kind": "Doc",
	"name": "petstore",
	"created": "2020-06-05T13:24:07.977Z",
	"creator": "/orgs/lukeb-eval",
	"modified": "2020-06-05T13:24:07.977Z",
	"permissions": null,
	"self": "/organizations/lukeb-eval/specs/doc/299536",
	"content": "/organizations/lukeb-eval/specs/doc/299536/content",
	"contents": null,
	"folder": "/organizations/lukeb-eval/specs/folder/173137",
	"folderId": "173137",
	"body": null,
	"trashed": false
}

Catat id . Anda akan menggunakannya dalam panggilan berikut untuk memberi tahu Apigee di file apa kami perlu memasukkan konten kami:

PUT https://apigee.com/dapi/api/organizations/lukeb-eval/specs/doc/299536/content

Badan permintaan untuk panggilan ini adalah seluruh spesifikasi API YAML. Sebagai tanggapan, Apigee akan membalas dengan 200 OK , menandakan bahwa spesifikasi API berhasil diunggah.

Panggilan terakhir adalah:

GET https://apigee.com/dapi/api/organizations/lukeb-eval/specs/folder/home

Ini menghasilkan respons berikut:

{
	"id": "173137",
	"kind": "Folder",
	"name": "/orgs/lukeb-eval root",
	"created": "2019-06-06T07:39:58.805Z",
	"creator": "/orgs/lukeb-eval",
	"modified": "2019-06-06T07:39:58.805Z",
	"permissions": null,
	"self": "/organizations/lukeb-eval/specs/folder/173137",
	"content": null,
	"contents": [{
		"id": "299536",
		"kind": "Doc",
		"name": "petstore",
		"created": "2020-06-05T13:24:07.977Z",
		"creator": "/orgs/lukeb-eval",
		"modified": "2020-06-05T13:24:08.740Z",
		"permissions": null,
		"self": "/organizations/lukeb-eval/specs/doc/299536",
		"content": "/organizations/lukeb-eval/specs/doc/299536/content",
		"contents": null,
		"folder": "/organizations/lukeb-eval/specs/folder/173137",
		"folderId": "173137",
		"body": null,
		"trashed": false
	}],
	"folder": null,
	"folderId": null,
	"body": null,
	"trashed": false
}

Pada titik ini, kami tahu bahwa file spesifikasi tersedia di organisasi kami. Ini adalah panggilan terakhir yang dilakukan karena Apigee perlu memperbarui UI untuk menampilkan spesifikasi terbaru setelah menambahkan yang baru.

Panggilan ini juga dijalankan jika kita hanya membuka Spesifikasi tab di Apigee.

Setelah melalui permintaan HTTP, kami sekarang dapat mengotomatiskan pembuatan atau pembaruan spesifikasi:

  • GET https://apigee.com/dapi/api/organizations/lukeb-eval/specs/folder/home – Ini memberi kita folderId . Kami membutuhkannya untuk panggilan berikutnya. Ini juga menunjukkan apakah spesifikasi perlu dibuat atau diperbarui, tergantung apakah sudah ada.
  • POST https://apigee.com/dapi/api/organizations/lukeb-eval/specs/doc – Jika spesifikasi tidak ada, kami menjalankan panggilan ini untuk membuat file kosong.
  • PUT https://apigee.com/dapi/api/organizations/lukeb-eval/specs/doc/299536/content – Isi spek dengan informasi terbaru. Bergantung pada apakah itu permintaan pembuatan atau pembaruan, id spesifikasi dapat diambil dari langkah 1 atau 2.

Langkah-langkah ini tercermin dalam skrip otomatisasi kami upload_spec.py . Skrip ini memerlukan argumen berikut agar berhasil dijalankan:

  • name – Nama spek yang akan diupload ke Apigee. Jika ini tidak unik, spesifikasi dengan nama yang sama di Apigee akan diperbarui.
  • file – Jalur file spesifikasi pada mesin Anda.
  • org – Nama organisasi di Apigee. https://apigee.com/organizations/johnd-eval/proxies memiliki nama organisasi johnd-eval .
  • username – Nama pengguna pengguna Apigee yang digunakan skrip untuk mengambil token akses. Token akses ini digunakan untuk semua panggilan REST yang dijalankan oleh skrip. access_token kedaluwarsa setiap 12 jam. Biasanya pengguna otomatisasi khusus digunakan di sini.
  • password – Kata sandi untuk nama pengguna yang disebutkan di atas.

Untuk membuat atau memperbarui spesifikasi untuk contoh yang dibahas di atas, gunakan:

upload_spec.py --name petstore --file petstore.yaml --org lukeb-eval --username $APIGEE_USER --password $APIGEE_PASSWORD

Hasil khas yang berhasil, diambil dari jalur otomatisasi kami, adalah sebagai berikut:

Langkah 2:Mengunggah Produk API

Dalam upaya otomatisasi kami, kami membuat upload_product.py , yang memanfaatkan Apigee Management API untuk membuat atau memperbarui Produk API.

Argumen berikut diperlukan agar skrip dapat berjalan dengan sukses:

  • file – File JSON yang mewakili Produk API yang akan dibuat. Contoh cara membuatnya dapat ditemukan di bagian Buat Produk API atau Perbarui Produk API dari dokumentasi API Manajemen Apigee. Nama selalu wajib dalam file JSON karena digunakan untuk memeriksa apakah Produk API ada atau tidak. Jika produk API ada, akan diperbarui dengan file JSON baru.
  • org – Nama organisasi di Apigee.
  • username – Nama pengguna pengguna Apigee yang digunakan skrip untuk mengambil token akses.
  • password – Kata sandi untuk nama pengguna yang disebutkan di atas.

Itu dapat dieksekusi sebagai berikut:

upload_api_product.py --file product_settings.json --org lukeb-eval --username $APIGEE_USER --password $APIGEE_PASSWORD

Hasil khas yang berhasil, diambil dari jalur otomatisasi kami, adalah sebagai berikut:

Langkah 3:Mengunggah Spesifikasi API ke Portal Pengembang

Memperbarui spesifikasi API tidak berarti bahwa Portal Pengembang Apigee akan otomatis menampilkan yang terbaru, dan Apigee tidak menawarkan ini melalui API pengelolaan mereka.

Ini dapat dilakukan secara manual melalui UI, jadi kami perlu menyelidiki panggilan API apa yang digunakan untuk membuat atau memperbarui dokumentasi API di Portal Pengembang.

1. Di API dari portal yang Anda pilih di Apigee, klik +API tombol:

2. Pilih Produk API dan spesifikasi API. Terakhir, tambahkan nama dan deskripsi untuk API, dan klik Selesai .

3. Menekan tombol Selesai tombol meminta panggilan HTTP berikut:

POST https://apigee.com/portals/api/sites/lukeb-eval-portal/apidocs
{
	"title": "Pet Store",
	"description": "",
	"edgeAPIProductName": "Pet Store",
	"visibility": true,
	"anonAllowed": true,
	"requireCallbackUrl": false,
	"specId": "petstore",
	"specContent": "299536"
}

4. Untuk menampilkan spesifikasi API di portal, Anda memerlukan parameter berikut:

  • edgeAPIProductName – Nama produk API yang dibuat sebelumnya.
  • specId – Nama spesifikasi yang dibuat sebelumnya.
  • specContent – ID file dari spesifikasi yang dibuat sebelumnya.

Yang membingungkan, specId sebenarnya nama spesifikasi dan keunikannya tidak diberlakukan oleh Apigee. Dalam skrip otomatisasi kami, kami mengasumsikan spesifikasi diberi nama unik, dan ini akan membantu mengambil specContent melalui specId selanjutnya.

Mari kita pertimbangkan apa yang dilakukan UI Apigee saat spesifikasi berubah. Jika spesifikasi Pet Store diperbarui, berikut ini akan muncul di layar API di Portal Pengembang:

Dengan mengeklik Kelola Cuplikan Spesifikasi gambar kuning di sebelah kanan, kita mendapatkan layar berikut:

Klik Perbarui cuplikan . Itu memperbarui Portal Pengembang dengan spesifikasi terbaru.

Mengotomatiskan Permintaan API

Untuk mengotomatiskan proses, kita memerlukan tiga permintaan API:

GET https://apigee.com/portals/api/sites/lukeb-eval-portal/apidocs

Yang pertama, menghasilkan respons berikut:

{
	"status": "success",
	"message": "all visible apidocs returned",
	"data": [{
		"id": 57782,
		"siteId": "lukeb-eval-portal",
		"title": "Pet Store",
		"description": "Pet Store Description",
		"visibility": true,
		"enrollment": null,
		"apiId": "pet-store",
		"edgeAPIProductName": "Pet Store",
		"specId": "petstore",
		"specContent": "299536",
		"specTitle": null,
		"snapshotExists": true,
		"snapshotModified": 1591371293000,
		"modified": 1591371290000,
		"anonAllowed": true,
		"imageUrl": null,
		"snapshotState": "OK_DOCSTORE",
		"requireCallbackUrl": false,
		"categoryIds": [],
		"productExists": true,
		"specModified": null,
		"snapshotOutdated": false,
		"snapshotSourceMissing": false
	}],
	"request_id": "1309320113",
	"error_code": null
}

Dari perspektif otomatisasi, permintaan ini memberi Anda ID Portal Pengembang dan mencantumkan semua spesifikasi di portal.

Setelah mendapatkan ID portal, kita memerlukan panggilan API berikut:

PUT https://apigee.com/portals/api/sites/lukeb-eval-portal/apidocs/57782
{
	"specId": "petstore",
	"imageUrl": null,
	"visibility": true,
	"anonAllowed": true,
	"description": "Pet Store Description"
}

Panggilan yang disebutkan di atas digunakan untuk mengonfirmasi pengaturan dasar API di portal. ID 57782 di akhir URL permintaan terdapat ID Portal Pengembang.

Setelah selesai, permintaan lain dijalankan:

PUT https://apigee.com/portals/api/sites/lukeb-eval-portal/apidocs/57782/snapshot

Permintaan ini tidak memiliki isi, dan menginstruksikan Portal Pengembang untuk menampilkan spesifikasi terbaru.

Dengan semua informasi ini, kami sekarang dapat mengotomatiskan penerapan spesifikasi portal sebagai berikut:

1. Gunakan GET https://apigee.com/dapi/api/organizations/lukeb-eval/specs/folder/home untuk memastikan spesifikasi yang ingin kita tampilkan ada.

2. Sertakan GET https://apigee.com/portals/api/sites/lukeb-eval-portal/apidocs untuk mendapatkan ID portal dan memeriksa apakah kita perlu membuat atau memperbarui spesifikasi di portal.

  • Jika Anda perlu membuat:

POST https://apigee.com/portals/api/sites/lukeb-eval-portal/apidocs

  • Jika Anda perlu memperbarui:

PUT https://apigee.com/portals/api/sites/lukeb-eval-portal/apidocs/57782

PUT https://apigee.com/portals/api/sites/lukeb-eval-portal/apidocs/57782/snapshot

Untuk itu, upload_portal_documentation.py skrip otomatisasi telah dibuat. Ini membutuhkan parameter berikut:

  • file – File JSON yang mewakili Dokumentasi Portal API yang akan dibuat. Contoh JSON ditampilkan sebelumnya di posting ini. Sejak orgname dan specId disediakan sebagai parameter, mereka tidak boleh menjadi bagian dari file JSON, jika tidak mereka akan ditimpa. specContent diambil dari specId asalkan, karena kami sedang mengerjakan premis bahwa nama spesifikasi akan selalu unik.
  • portal – Nama lengkap portal tempat kita ingin membuat dokumentasi. misalnya Jika portal diakses melalui https://johnd-eval-test.apigee.io, nama lengkap portal tersebut adalah johnd-eval-test .
  • org – Sama seperti di upload_spec.py .
  • username – Sama seperti di upload_spec.py .
  • password – Sama seperti di upload_spec.py .

Itu dapat dieksekusi sebagai berikut:

upload_portal_documentation.py --file portal_documentation_setup.json --org lukeb-eval --spec_name petstore --portal portal --username $APIGEE_USER --password $APIGEE_PASSWORD

Hasil khas yang berhasil, diambil dari jalur otomatisasi kami, adalah sebagai berikut:

Langkah 4:Integrasi Pipeline CI/CD

Kami memiliki skrip ini dalam gambar Docker sehingga sangat mudah untuk mengimpor dan menjalankannya di saluran CI/CD Anda.

Mari kita ambil contoh GitLab:

apigee-spec-deploy:
  image: ghcr.io/phoenixnap/apigee-automation:v1.0.0
  stage: spec-deploy
  variables:
    SPEC_NAME: petstore
    SPEC_PATH: petstore.yaml
    APIGEE_PRODUCT: product.json
    APIGEE_PORTAL_DOC: portal_documentation.json
  script:
    - /automation/upload_spec.py --name $SPEC_NAME --file $SPEC_PATH --org $ORG_NAME --username $APIGEE_USER --password $APIGEE_PASSWORD
    - /automation/upload_api_product.py --file $APIGEE_PRODUCT --org $ORG_NAME --username $APIGEE_USER --password $APIGEE_PASSWORD
    - /automation/upload_portal_documentation.py --file $APIGEE_PORTAL_DOC --org $ORG_NAME --spec_name $SPEC_NAME --portal $APIGEE_PORTAL --username $APIGEE_USER --password $APIGEE_PASSWORD

Kami telah membuat tugas pipeline yang disebut apigee-spec-deploy , yang menarik gambar apigee-automation dari Paket GitHub, dan mengeksekusi tiga skrip python yang kita diskusikan di sini dengan parameter yang diperlukan.

Pekerjaan GitLab akan berhenti dijalankan jika ada skrip yang gagal. Jika itu terjadi, kesalahan rinci disediakan dalam output. Ini menjamin bahwa setiap kali skrip dijalankan, semua informasi yang dibutuhkan dari skrip sebelumnya akan tersedia.


Cent OS
  1. Bagaimana cara menggunakan API Jaringan E2E?

  2. Cara Menginstal/Memperbarui PHP ke 7.4 di CentOS 7

  3. Bagaimana Cara Memperbarui Python Dari 3.4.3 Menjadi 3.5??

  1. Bagaimana Cara Memperbarui Ubuntu?

  2. Bagaimana Cara Memperbarui Ke Python 2.7?

  3. Bagaimana API Membuat Data Lebih Berharga

  1. Cara Memperbarui Raspberry Pi

  2. Cara Memperbarui Git

  3. Cara memperbarui gambar FOG