Snapshot
Sumber daya rekam jepret tidak tersedia di API versi 1.0.
Rekam jepret adalah sumber daya yang diidentifikasi secara unik dengan namanya. Lihat detail untuk setiap operasi.
Operasional
- Dapatkan
- Cantumkan beberapa
- Buat
- Arsipkan/Pulihkan
- Daftar kunci-nilai
Prasyarat
- Semua permintaan HTTP harus diautentikasi. Lihat bagian autentikasi.
- Semua permintaan HTTP harus menyediakan eksplisit
api-version
. Lihat bagian penerapan versi.
Sintaks
Snapshot
{
"etag": [string],
"name": [string],
"status": [string, enum("provisioning", "ready", "archived", "failed")],
"filters": [array<SnapshotFilter>],
"composition_type": [string, enum("key", "key_label")],
"created": [datetime ISO 8601],
"size": [number, bytes],
"items_count": [number],
"tags": [object with string properties],
"retention_period": [number, timespan in seconds],
"expires": [datetime ISO 8601]
}
SnapshotFilter
{
"key": [string],
"label": [string]
}
{
"key": [string],
"label": [string],
"tags": [array<string>]
}
Mendapatkan rekam jepret
Wajib diisi: {name}
, {api-version}
GET /snapshots/{name}?api-version={api-version}
Respons:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Mon, 03 Mar 2023 9:00:03 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Link: </kv?snapshot=prod-2023-03-20&api-version={api-version}>; rel="items"
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"name": "prod-2023-03-20",
"status": "ready",
"filters": [
{
"key": "*",
"label": null
}
],
"composition_type": "key",
"created": "2023-03-20T21:00:03+00:00",
"size": 2000,
"items_count": 4,
"tags": {
"t1": "value1",
"t2": "value2"
},
"retention_period": 7776000
}
Jika rekam jepret dengan nama yang disediakan tidak ada, respons berikut dikembalikan:
HTTP/1.1 404 Not Found
Dapatkan (secara bersyarat)
Untuk meningkatkan cache klien, gunakan header permintaan If-Match
atau If-None-Match
. Argumen etag
adalah bagian dari representasi rekam jepret. Untuk informasi selengkapnya, lihat bagian 14.24 dan 14.26.
Permintaan berikut mengambil rekam jepret hanya jika representasi saat ini tidak cocok dengan yang ditentukan etag
:
GET /snapshot/{name}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.snapshot+json;
If-None-Match: "{etag}"
Respons:
HTTP/1.1 304 NotModified
Atau
HTTP/1.1 200 OK
Mencantumkan rekam jepret
Opsional: name
(Jika tidak ditentukan, itu menyiratkan nama apa pun.) Opsional: status
(Jika tidak ditentukan, ini menyiratkan status apa pun.)
GET /snapshots?name=prod-*&api-version={api-version} HTTP/1.1
Respons:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshotset+json; charset=utf-8
Untuk opsi lainnya, lihat bagian "Pemfilteran" nanti di artikel ini.
Penentuan halaman
hasilnya akan ditentukan halaman jika jumlah item yang dikembalikan melebihi batas respons. Ikuti Link
header respons opsional dan gunakan rel="next"
untuk navigasi.
Atau, konten menyediakan tautan berikutnya dalam bentuk properti @nextLink
. URI yang ditautkan menyertakan argumen api-version
.
GET /snapshots?api-version={api-version} HTTP/1.1
Respons:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshotset+json; charset=utf-8
Link: <{relative uri}>; rel="next"
{
"items": [
...
],
"@nextLink": "{relative uri}"
}
Filter
Kombinasi pemfilteran name
dan status
didukung.
Gunakan parameter string kueri name
dan status
opsional.
GET /snapshots?name={name}&status={status}&api-version={api-version}
Filter yang didukung
Filter nama | Efek |
---|---|
name dihilangkan atau name=* |
Mencocokkan rekam jepret dengan nama apa pun |
name=abc |
Cocok dengan rekam jepret bernama abc |
name=abc* |
Mencocokkan rekam jepret dengan nama yang dimulai dengan abc |
name=abc,xyz |
Mencocokkan rekam jepret dengan nama abc atau xyz (terbatas pada 5 CSV) |
Filter status | Efek |
---|---|
status dihilangkan atau status=* |
Mencocokkan rekam jepret dengan status apa pun |
status=ready |
Mencocokkan rekam jepret dengan status siap |
status=ready,archived |
Cocok dengan rekam jepret dengan status siap atau diarsipkan (terbatas pada 5 CSV) |
Karakter khusus
*
, , \
,
Jika karakter khusus adalah bagian dari nilai, karakter harus lolos menggunakan \{Reserved Character}
. Karakter yang tidak dilayani juga dapat diloloskan.
Validasi filter
Jika validasi filter gagal, responsnya adalah HTTP 400
dengan detail kesalahan:
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json; charset=utf-8
{
"type": "https://azconfig.io/errors/invalid-argument",
"title": "Invalid request parameter '{filter}'",
"name": "{filter}",
"detail": "{filter}(2): Invalid character",
"status": 400
}
Contoh
Semua
GET /snapshots?api-version={api-version}
Nama rekam jepret dimulai dengan abc
GET /snapshot?name=abc*&api-version={api-version}
Nama rekam jepret dimulai dengan abc dan status sama dengan siap atau diarsipkan
GET /snapshot?name=abc*&status=ready,archived&api-version={api-version}
Bidang khusus permintaan
Gunakan parameter string kueri opsional $select
dan berikan daftar bidang yang diminta yang dipisahkan koma. Jika parameter $select
dihilangkan, respons berisi set default.
GET /snapshot?$select=name,status&api-version={api-version} HTTP/1.1
Membuat Cuplikan
parameter
Nama Properti | Wajib | Nilai default | Validasi |
---|---|---|---|
nama | yes | n/a | Panjangnya Maksimum: 256 |
filter | yes | n/a | Hitung Minimum: 1 Maksimum: 3 |
filters[<index>].key | yes | n/a | |
filters[<index>].label | no | nihil | Filter label multi-pencocokan (misalnya: "*", "koma,dipisahkan") tidak didukung dengan jenis komposisi 'kunci'. |
tag | no | {} | |
composition_type | no | kunci | |
retention_period | no | Tingkat standar 2592000 (30 hari) Tingkat gratis 604800 (tujuh hari) |
Tingkat standar Minimum: 3600 (satu jam) Maksimum: 7776000 (90 hari) Tingkat gratis Minimum: 3600 (satu jam) Maksimum: 604800 (tujuh hari) |
PUT /snapshot/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
"filters": [ // required
{
"key": "app1/*", // required
"label": "prod" // optional
}
],
"tags": { // optional
"tag1": "value1",
"tag2": "value2",
},
"composition_type": "key", // optional
"retention_period": 2592000 // optional
}
Respons:
HTTP/1.1 201 Created
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"name": "{name}",
"status": "provisioning",
"filters": [
{
"key": "app1/*",
"label": "prod"
}
],
"composition_type": "key",
"created": "2023-03-20T21:00:03+00:00",
"size": 2000,
"items_count": 4,
"tags": {
"t1": "value1",
"t2": "value2"
},
"retention_period": 2592000
}
Nama Properti | Wajib | Nilai default | Validasi |
---|---|---|---|
nama | yes | n/a | Panjangnya Maksimum: 256 |
filter | yes | n/a | Hitung Minimum: 1 Maksimum: 3 |
filters[<index>].key | yes | n/a | |
filters[<index>].label | no | nihil | Filter label multi-pencocokan (misalnya: "*", "koma,dipisahkan") tidak didukung dengan jenis komposisi 'kunci'. |
filters[<index>].tags | no | nihil | Hitung Minimum: 0 Maksimum: 5 |
tag | no | {} | |
composition_type | no | kunci | |
retention_period | no | Tingkat standar 2592000 (30 hari) Tingkat gratis 604800 (7 hari) |
Tingkat standar Minimum: 3600 (1 jam) Maksimum: 7776000 (90 hari) Tingkat gratis Minimum: 3600 (1 jam) Maksimum: 604800 (7 hari) |
PUT /snapshot/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
"filters": [ // required
{
"key": "app1/*", // required
"label": "prod", // optional
"tags": ["group=g1", "default=true"] // optional
}
],
"tags": { // optional
"tag1": "value1",
"tag2": "value2",
},
"composition_type": "key", // optional
"retention_period": 2592000 // optional
}
Respons:
HTTP/1.1 201 Created
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"name": "{name}",
"status": "provisioning",
"filters": [
{
"key": "app1/*",
"label": "prod",
"tags": ["group=g1", "default=true"]
}
],
"composition_type": "key",
"created": "2023-03-20T21:00:03+00:00",
"size": 2000,
"items_count": 4,
"tags": {
"t1": "value1",
"t2": "value2"
},
"retention_period": 2592000
}
Status rekam jepret yang baru dibuat adalah provisioning
.
Setelah rekam jepret diprovisikan sepenuhnya, status diperbarui ke ready
.
Klien dapat melakukan polling rekam jepret untuk menunggu rekam jepret siap sebelum mencantumkan nilai kunci terkait.
Untuk mengkueri informasi tambahan tentang operasi, referensikan bagian pembuatan rekam jepret polling.
Jika rekam jepret sudah ada, respons berikut dikembalikan:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset=utf-8
{
"type": "https://azconfig.io/errors/already-exists",
"title": "The resource already exists.",
"status": 409,
"detail": ""
}
Pembuatan rekam jepret polling
Respons permintaan pembuatan rekam jepret mengembalikan Operation-Location
header.
Respons:
HTTP/1.1 201 Created
...
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
Status operasi provisi rekam jepret dapat ditemukan di URI yang terkandung dalam Operation-Location
.
Klien dapat melakukan polling objek status ini untuk memastikan rekam jepret disediakan sebelum mencantumkan nilai kunci terkait.
GET {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
Respons:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"id": "{id}",
"status": "Succeeded",
"error": null
}
Jika terjadi kesalahan selama penyediaan rekam jepret, error
properti berisi detail yang menjelaskan kesalahan.
{
"id": "{name}",
"status": "Failed",
"error": {
"code": "QuotaExceeded",
"message": "The allotted quota for snapshot creation has been surpassed."
}
}
Arsip (Patch)
Rekam jepret ready
dalam status dapat diarsipkan.
Rekam jepret yang diarsipkan diberi tanggal kedaluwarsa, berdasarkan periode retensi yang ditetapkan pada saat pembuatannya.
Setelah tanggal kedaluwarsa berlalu, rekam jepret akan dihapus secara permanen.
Kapan saja sebelum tanggal kedaluwarsa, item rekam jepret masih dapat dicantumkan.
Mengarsipkan rekam jepret yang sudah archived
tidak memengaruhi rekam jepret.
- Diperlukan:
{name}
,{status}
,{api-version}
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
"status": "archived"
}
Respons: Mengembalikan rekam jepret yang diarsipkan
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
{
"etag": "33a0c9cdb43a4c2cb5fc4c1feede1c68",
"name": "{name}",
"status": "archived",
...
"expires": "2023-08-11T21:00:03+00:00"
}
Pengarsipan rekam jepret yang saat ini berada dalam status provisioning
atau failed
adalah operasi yang tidak valid.
Respons:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset="utf-8"
{
"type": "https://azconfig.io/errors/invalid-state",
"title": "Target resource state invalid.",
"detail": "The target resource is not in a valid state to perform the requested operation.",
"status": 409
}
Pulihkan (Patch)
Rekam jepret dalam status archived
dapat dipulihkan.
Setelah rekam jepret dipulihkan, tanggal kedaluwarsa rekam jepret akan dihapus.
Memulihkan rekam jepret yang sudah ready
tidak memengaruhi rekam jepret.
- Diperlukan:
{name}
,{status}
,{api-version}
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
"status": "ready"
}
Respons: Mengembalikan rekam jepret yang dipulihkan
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
{
"etag": "90dd86e2885440f3af9398ca392095b9",
"name": "{name}",
"status": "ready",
...
}
Memulihkan rekam jepret yang saat ini berada dalam status provisioning
atau failed
adalah operasi yang tidak valid.
Respons:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset="utf-8"
{
"type": "https://azconfig.io/errors/invalid-state",
"title": "Target resource state invalid.",
"detail": "The target resource is not in a valid state to perform the requested operation.",
"status": 409
}
Arsipkan/pulihkan rekam jepret (secara kondisional)
Untuk mencegah kondisi persaingan, gunakan header permintaan If-Match
atau If-None-Match
. Argumen etag
adalah bagian dari representasi rekam jepret.
Jika If-Match
atau If-None-Match
dihilangkan, operasi bersifat tidak bersyarat.
Respons berikut memperbarui sumber daya hanya jika representasi saat ini cocok dengan yang ditentukan etag
:
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Respons berikut memperbarui sumber daya hanya jika representasi saat ini tidak cocok dengan yang ditentukan etag
:
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json;
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Responses to
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
Atau
HTTP/1.1 412 PreconditionFailed
Mencantumkan nilai kunci rekam jepret
Wajib diisi: {name}
, {api-version}
GET /kv?snapshot={name}&api-version={api-version}
Catatan
Mencoba mencantumkan item rekam jepret yang tidak berada dalam status ready
atau archived
akan menghasilkan respons daftar kosong.
Bidang khusus permintaan
Gunakan parameter string kueri opsional $select
dan berikan daftar bidang yang diminta yang dipisahkan koma. Jika parameter $select
dihilangkan, respons berisi set default.
GET /kv?snapshot={name}&$select=key,value&api-version={api-version} HTTP/1.1