Bagikan melalui


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