اللقطة
مورد اللقطة غير متوفر في إصدار واجهة برمجة التطبيقات 1.0.
اللقطة هي مورد تم تعريفه بشكل فريد باسمه. راجع تفاصيل كل عملية.
العمليات
- الحصول على
- قائمة متعددة
- إنشاء
- الأرشفة/الاسترداد
- سرد قيم key
المتطلبات الأساسية
- لابد من مصادقة جميع طلبات HTTP. راجع القسم authentication.
- يجب أن توفر جميع طلبات HTTP
api-version
صراحةً. راجع قسم الإصدار.
بناء الجملة
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>]
}
الحصول على لقطة
مطلوب: {name}
، {api-version}
GET /snapshots/{name}?api-version={api-version}
الاستجابات:
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
}
إذا لم تكن هناك لقطة بالاسم المقدم، يتم إرجاع الاستجابة التالية:
HTTP/1.1 404 Not Found
Get (بشكل مشروط)
لتحسين التخزين المؤقت للعميل، استخدم عناوين الطلب If-Match
أو If-None-Match
. etag
تعد الوسيطة جزءا من تمثيل اللقطة. لمزيدٍ من المعلومات، راجع القسمين 14.24 و14.26.
يسترد الطلب التالي اللقطة فقط إذا لم يتطابق التمثيل الحالي مع المحدد etag
:
GET /snapshot/{name}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.snapshot+json;
If-None-Match: "{etag}"
الاستجابات:
HTTP/1.1 304 NotModified
أو
HTTP/1.1 200 OK
سرد اللقطات
اختياري: name
(إذا لم يتم تحديده، فإنه يعني أي اسم.) اختياري: status
(إذا لم يتم تحديده، فإنه يعني أي حالة.)
GET /snapshots?name=prod-*&api-version={api-version} HTTP/1.1
الاستجابة:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshotset+json; charset=utf-8
لمزيد من الخيارات، راجع قسم "التصفية" لاحقا في هذه المقالة.
فصل الصفحات
يتم ترقيم النتيجة في حال تجاوز عدد العناصر التي تم إرجاعها حد الاستجابة. تتبع عناوين الاستجابة Link
الاختيارية واستخدم rel="next"
للتنقل.
بدلاً من ذلك، يوفر المحتوى ارتباطًا تاليًا في شكل الخاصية @nextLink
. يتضمن URI المرتبط الوسيطة api-version
.
GET /snapshots?api-version={api-version} HTTP/1.1
الاستجابة:
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}"
}
التصفية
يتم دعم مزيج من عامل التصفية name
وstatus
.
استخدم معلمات سلسلة الاستعلام الاختيارية name
وstatus
.
GET /snapshots?name={name}&status={status}&api-version={api-version}
عوامل التصفيةِ المدعومة
عامل تصفية الاسم | التأثير |
---|---|
تم حذف name أو name=* |
يطابق اللقطات بأي اسم |
name=abc |
يطابق لقطة باسم abc |
name=abc* |
يطابق اللقطات مع الأسماء التي تبدأ ب abc |
name=abc,xyz |
يطابق اللقطات مع الأسماء abc أو xyz (تقتصر على 5 CSV) |
عامل تصفية الحالة | التأثير |
---|---|
تم حذف status أو status=* |
يطابق اللقطات مع أي حالة |
status=ready |
يطابق اللقطات بحالة جاهزة |
status=ready,archived |
يطابق اللقطات بالحالة الجاهزة أو المؤرشفة (تقتصر على 5 CSV) |
حروف محجوزة
*
، ، \
,
في حال كان الحرف المحجوز جزءًا من القيمة، فيجب إلغاءه باستخدام \{Reserved Character}
. يمكن أيضا إلغاء الأحرف غير المقدمة.
التحقق من صحة عامل التصفية
إذا فشل التحقق من صحة عامل التصفية، فإن الاستجابة هي HTTP 400
مع تفاصيل الخطأ:
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
}
الأمثلة
الكل
GET /snapshots?api-version={api-version}
يبدأ اسم اللقطة ب abc
GET /snapshot?name=abc*&api-version={api-version}
يبدأ اسم اللقطة ب abc والحالة تساوي جاهزة أو مؤرشفة
GET /snapshot?name=abc*&status=ready,archived&api-version={api-version}
طلب حقول خاصة
استخدم معلمة سلسلةِ الاستعلام الاختيارية $select
وقدم قائمة مفصولة بفواصل بالحقول المطلوبة. في حال تم حذف المعلمة $select
تحتوي الاستجابة على المجموعة الافتراضية.
GET /snapshot?$select=name,status&api-version={api-version} HTTP/1.1
إنشاء لقطة
البارامترات
اسم الخاصية | المطلوب | القيمة الافتراضية | التحقق من الصحة |
---|---|---|---|
الاسم | yes | غير متوفر | طول الحد الأقصى: 256 |
عوامل تصفية | yes | غير متوفر | عد الحد الأدنى: 1 الحد الأقصى: 3 |
عوامل التصفية[<الفهرس>].key | yes | غير متوفر | |
عوامل التصفية[<الفهرس>].التسمية | no | قيمة فارغة | عوامل تصفية التسميات متعددة المطابقة (على سبيل المثال: "*"، "فاصلة،مفصولة") غير مدعومة بنوع تكوين "المفتاح". |
العلامات | no | {} | |
composition_type | no | المفتاح | |
retention_period | no | المستوى القياسي 2592000 (30 يوما) المستوى المجاني 604800 (سبعة أيام) |
المستوى القياسي الحد الأدنى: 3600 (ساعة واحدة) الحد الأقصى: 7776000 (90 يوما) المستوى المجاني الحد الأدنى: 3600 (ساعة واحدة) الحد الأقصى: 604800 (سبعة أيام) |
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
}
الاستجابات:
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
}
اسم الخاصية | المطلوب | القيمة الافتراضية | التحقق من الصحة |
---|---|---|---|
الاسم | yes | غير متوفر | طول الحد الأقصى: 256 |
عوامل تصفية | yes | غير متوفر | عد الحد الأدنى: 1 الحد الأقصى: 3 |
عوامل التصفية[<الفهرس>].key | yes | غير متوفر | |
عوامل التصفية[<الفهرس>].التسمية | no | قيمة فارغة | عوامل تصفية التسميات متعددة المطابقة (على سبيل المثال: "*"، "فاصلة،مفصولة") غير مدعومة بنوع تكوين "المفتاح". |
عوامل التصفية [<الفهرس>].العلامات | no | قيمة فارغة | عد الحد الأدنى: 0 الحد الأقصى: 5 |
العلامات | no | {} | |
composition_type | no | المفتاح | |
retention_period | no | المستوى القياسي 2592000 (30 يوما) المستوى المجاني 604800 (7 أيام) |
المستوى القياسي الحد الأدنى: 3600 (ساعة واحدة) الحد الأقصى: 7776000 (90 يوما) المستوى المجاني الحد الأدنى: 3600 (ساعة واحدة) الحد الأقصى: 604800 (7 أيام) |
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
}
الاستجابات:
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
}
حالة اللقطة التي تم إنشاؤها حديثا هي provisioning
.
بمجرد توفير اللقطة بالكامل، يتم تحديث الحالة إلى ready
.
يمكن للعملاء استقصاء اللقطة لانتظار أن تكون اللقطة جاهزة قبل سرد قيم المفاتيح المقترنة بها.
للاستعلام عن معلومات إضافية حول العملية، راجع قسم إنشاء لقطة الاستقصاء.
إذا كانت اللقطة موجودة بالفعل، يتم إرجاع الاستجابة التالية:
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": ""
}
إنشاء لقطة الاستقصاء
ترجع استجابة طلب إنشاء لقطة عنوانا Operation-Location
.
الاستجابات:
HTTP/1.1 201 Created
...
Operation-Location: {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
يمكن العثور على حالة عملية توفير اللقطة في URI المضمن في Operation-Location
.
يمكن للعملاء استقصاء كائن الحالة هذا للتأكد من توفير لقطة قبل سرد قيم المفاتيح المقترنة به.
GET {appConfigurationEndpoint}/operations?snapshot={name}&api-version={api-version}
الاستجابة:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"id": "{id}",
"status": "Succeeded",
"error": null
}
إذا حدث أي خطأ أثناء توفير اللقطة، error
تحتوي الخاصية على تفاصيل تصف الخطأ.
{
"id": "{name}",
"status": "Failed",
"error": {
"code": "QuotaExceeded",
"message": "The allotted quota for snapshot creation has been surpassed."
}
}
أرشيف (تصحيح)
يمكن أرشفة لقطة في ready
الحالة.
يتم تعيين تاريخ انتهاء صلاحية للقطة المؤرشفة، استنادا إلى فترة الاستبقاء التي تم إنشاؤها في وقت إنشائها.
بعد مرور تاريخ انتهاء الصلاحية، سيتم حذف اللقطة نهائيا.
في أي وقت قبل تاريخ انتهاء الصلاحية، لا يزال من الممكن سرد عناصر اللقطة.
لا تؤثر أرشفة لقطة بالفعل archived
على اللقطة.
- مطلوب:
{name}
، ،{status}
{api-version}
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
"status": "archived"
}
الاستجابة: إرجاع اللقطة المؤرشفة
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"
}
أرشفة لقطة موجودة حاليا في provisioning
الحالة أو failed
عملية غير صالحة.
الاستجابة:
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
}
استرداد (تصحيح)
يمكن استرداد لقطة في archived
الحالة.
بعد استرداد اللقطة، تتم إزالة تاريخ انتهاء صلاحية اللقطة.
لا يؤثر استرداد لقطة بالفعل ready
على اللقطة.
- مطلوب:
{name}
، ،{status}
{api-version}
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
{
"status": "ready"
}
الاستجابة: إرجاع اللقطة المستردة
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
{
"etag": "90dd86e2885440f3af9398ca392095b9",
"name": "{name}",
"status": "ready",
...
}
يعد استرداد لقطة موجودة حاليا في provisioning
الحالة أو failed
عملية غير صالحة.
الاستجابة:
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
}
لقطة الأرشيف/الاسترداد (بشكل مشروط)
لمنع حالات التعارض، استخدم If-Match
أو If-None-Match
اطلب العناوين. etag
تعد الوسيطة جزءا من تمثيل اللقطة.
إذا تم حذف If-Match
أو If-None-Match
، تكون العملية غير مشروطة.
تحدث الاستجابة التالية المورد فقط إذا تطابق التمثيل الحالي مع المحدد etag
:
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
تحدث الاستجابة التالية المورد فقط إذا لم يتطابق التمثيل الحالي مع المحدد etag
:
PATCH /snapshots/{name}?api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.snapshot+json;
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
الاستجابات
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.snapshot+json; charset=utf-8
...
أو
HTTP/1.1 412 PreconditionFailed
سرد قيم مفتاح اللقطة
مطلوب: {name}
، {api-version}
GET /kv?snapshot={name}&api-version={api-version}
إشعار
ستؤدي محاولة سرد عناصر اللقطة غير الموجودة في ready
الحالة أو archived
إلى استجابة قائمة فارغة.
طلب حقول خاصة
استخدم معلمة سلسلةِ الاستعلام الاختيارية $select
وقدم قائمة مفصولة بفواصل بالحقول المطلوبة. في حال تم حذف المعلمة $select
تحتوي الاستجابة على المجموعة الافتراضية.
GET /kv?snapshot={name}&$select=key,value&api-version={api-version} HTTP/1.1