Koneksi ke database dengan Azure Static Web Apps (pratinjau)
Fitur koneksi database Azure Static Web Apps memungkinkan Anda mengakses database dari aplikasi web statis Tanpa menulis kode sisi server kustom.
Setelah membuat koneksi antara aplikasi web dan database, Anda dapat memanipulasi data dengan dukungan penuh untuk operasi CRUD, otorisasi bawaan, dan hubungan.
Berdasarkan penyusun Api Data, Azure Static Web Apps mengambil permintaan REST dan GraphQL dan mengonversinya menjadi kueri database.
Fitur yang didukung oleh koneksi database meliputi:
Fitur | Deskripsi |
---|---|
Keamanan terintegrasi | Integrasi bawaan dengan model keamanan autentikasi dan otorisasi Azure Static Web Apps. Keamanan berbasis peran yang sama yang digunakan untuk mengamankan rute tersedia untuk titik akhir API. |
Operasi berbasis CRUD penuh | Lihat tutorial untuk Azure Cosmos DB, Azure SQL, MySQL, atau PostgreSQL untuk contoh tentang cara memanipulasi data di aplikasi Anda. |
Mendukung SQL dan NoSQL | Anda dapat menggunakan database relasional dan dokumen sebagai database aplikasi Anda. |
Arsitektur tanpa server | Koneksi skala dari 0 hingga 1 pekerja (selama pratinjau). |
Hubungan database | Hanya didukung melalui titik akhir GraphQL. |
Dukungan CLI | Kembangkan secara lokal dengan CLI Static Web Apps. --data-api-location Gunakan opsi untuk menangani permintaan ke API data dalam pengembangan sama seperti yang ditangani di cloud. |
Database yang didukung
Tabel berikut ini memperlihatkan dukungan untuk database relasional dan NoSQL yang berbeda.
Nama | Tipe | Deskripsi | REST | GraphQL |
---|---|---|---|---|
Azure Cosmos DB | Standard | Platform database yang didistribusikan secara global untuk NoSQL dan database relasional dalam skala apa pun. Selain konfigurasi standar, gql file skema diperlukan untuk titik akhir GraphQL. |
✔ | |
Azure SQL | Standard | Keluarga produk terkelola, aman, dan cerdas yang menggunakan mesin database SQL Server di cloud Azure. | ✔ | ✔ |
Azure Database untuk MySQL | Flex | Layanan database relasional di cloud Microsoft berdasarkan Edisi Komunitas MySQL | ✔ | ✔ |
Azure Database untuk PostgreSQL | Flex | Database-as-a-service PostgreSQL yang dikelola sepenuhnya yang menangani beban kerja misi penting dengan performa yang dapat diprediksi dan skalabilitas dinamis. | ✔ | ✔ |
Azure Database for PostgreSQL (tunggal) | Tunggal | Database PostgreSQL yang dikelola sepenuhnya. | ✔ | ✔ |
Anda bisa menggunakan jenis koneksi berikut untuk akses database:
- String koneksi
- Identitas Terkelola yang Ditetapkan Pengguna
- Identitas Terkelola yang ditetapkan sistem
Lokasi titik akhir
Akses ke titik akhir data tersedia di /data-api
luar jalur.
Tabel berikut ini memperlihatkan kepada Anda bagaimana permintaan dirutekan ke berbagai bagian aplikasi web statis:
Jalur | Deskripsi |
---|---|
example.com/api/* |
Fungsi API |
example.com/data-api/* |
Titik akhir koneksi database yang mendukung permintaan REST dan GraphQL. |
example.com/* |
Konten statis |
Saat mengonfigurasi koneksi database di situs web, Anda dapat mengonfigurasi akhiran /data-api/*
REST atau GraphQL rute. Awalan /data-api
adalah konvensi Static Web Apps dan tidak dapat diubah.
Konfigurasi
Ada dua langkah untuk mengonfigurasi koneksi database di Static Web Apps. Anda perlu menyambungkan database ke aplikasi web statis Anda di portal Azure, dan memperbarui file konfigurasi koneksi database Anda.
Lihat Konfigurasi koneksi database di Azure Static Web Apps untuk detail selengkapnya.
Pengembangan lokal
Azure Static Web Apps CLI (SWA CLI) menyertakan dukungan untuk bekerja dengan koneksi database selama pengembangan lokal.
CLI mengaktifkan titik akhir lokal /data-api
, dan permintaan proksi dari port 4280
ke port yang sesuai untuk akses database.
Berikut adalah contoh perintah yang memulai SWA CLI dengan koneksi database:
swa start ./src --data-api-location swa-db-connections
Perintah ini memulai SWA CLI di direktori src . Opsi ini --data-api-location
memberi tahu CLI bahwa folder bernama swa-db-connections menyimpan file staticwebapp.database.config.json .
Catatan
Dalam pengembangan, jika Anda menggunakan string koneksi untuk mengautentikasi, gunakan env()
fungsi untuk membaca string koneksi dari variabel lingkungan. String yang diteruskan ke env
fungsi harus dikelilingi oleh tanda kutip.
Keamanan berbasis peran
Saat Anda menentukan entitas dalam file staticwebapp.database.config.json , Anda dapat menentukan daftar peran yang diperlukan untuk mengakses titik akhir entitas.
Fragmen konfigurasi berikut memerlukan peran admin untuk mengakses semua tindakan (create
, , update
read
, delete
) pada entitas pesanan.
{
...
"entities": {
"Orders": {
"source": "dbo.Orders",
"permissions": [
{
"actions": ["*"],
"role": "admin"
}
]
}
}
...
}
Saat Anda melakukan panggilan ke titik akhir yang memerlukan peran, kondisi berikut diperlukan:
Pengguna saat ini harus diautentikasi.
Pengguna saat ini harus menjadi anggota peran yang diperlukan.
Permintaan REST atau GraphQL harus menyertakan header dengan kunci
X-MS-API-ROLE
dan nilai nama peran yang cocok dengan apa yang tercantum dalam aturan konfigurasi entitas.Misalnya, cuplikan berikut menunjukkan cara meneruskan peran admin di header permintaan.
{ method: "POST", headers: { "Content-Type": "application/json", "X-MS-API-ROLE": "admin" }, body: JSON.stringify(requestPayload) }
Kendala
- Database harus dapat diakses oleh infrastruktur Azure.
- Selama pratinjau publik, koneksi database menskalakan dari 0 ke 1 pekerja database.