القيم الأساسية
قيمة key هي مورد تم تحديده بواسطة مجموعة فريدة من key
+ label
. label
اختياري. للإشارة صراحة إلى قيمة key بدون تسمية، استخدم "\0" (URL مشفر باسم %00
). راجع تفاصيل كل عملية.
العمليات
- الحصول على
- قائمة متعددة
- المجموعة
- حذف
المتطلبات الأساسية
- لابد من مصادقة جميع طلبات HTTP. راجع القسم authentication.
- يجب أن توفر جميع طلبات HTTP
api-version
صراحةً. راجع قسم الإصدار.
بناء الجملة
{
"etag": [string],
"key": [string],
"label": [string, optional],
"content_type": [string, optional],
"value": [string],
"last_modified": [datetime ISO 8601],
"locked": [boolean],
"tags": [object with string properties, optional]
}
الحصول على قيمة key
مطلوب: {key}
، {api-version}
اختياري: label
(إذا تم حذفه، فهذا يعني أن قيمة key بدون تسمية.)
GET /kv/{key}?label={label}&api-version={api-version}
الاستجابات:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8;
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"key": "{key}",
"label": "{label}",
"content_type": null,
"value": "example value",
"last_modified": "2017-12-05T02:41:26+00:00",
"locked": "false",
"tags": {
"t1": "value1",
"t2": "value2"
}
}
إذا لم يكن key موجودًا، يتم إرجاع الاستجابة التالية:
HTTP/1.1 404 Not Found
Get (بشكل مشروط)
لتحسين التخزين المؤقت للعميل، استخدم عناوين الطلب If-Match
أو If-None-Match
. الوسيطة etag
هي جزء من تمثيل key. لمزيدٍ من المعلومات، راجع القسمين 14.24 و14.26.
يسترد الطلب التالي قيمة key فقط إذا لم يتطابق التمثيل الحالي مع etag
المحدد :
GET /kv/{key}?api-version={api-version} HTTP/1.1
Accept: application/vnd.microsoft.appconfig.kv+json;
If-None-Match: "{etag}"
الاستجابات:
HTTP/1.1 304 NotModified
أو
HTTP/1.1 200 OK
سرد قيم key
اختياري: key
(إذا لم يتم تحديده، فإنه يعني أي مفتاح.)
اختياري: label
(إذا لم يتم تحديده، فإنه يعني أي تسمية.)
GET /kv?label=*&api-version={api-version} HTTP/1.1
الاستجابة:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8
اختياري: tags
(إذا لم يتم تحديده، فإنه يعني أي علامات.)
GET /kv?key=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1
الاستجابة:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json; charset=utf-8
لمزيد من الخيارات، راجع قسم "التصفية" لاحقا في هذه المقالة.
سرد قيم المفاتيح (بشكل مشروط)
لتحسين التخزين المؤقت للعميل، استخدم عناوين الطلب If-Match
أو If-None-Match
. etag
الوسيطة هي جزء من نص الاستجابة لقيم مفاتيح القائمة والعنوان.
إذا تم حذف If-Match
أو If-None-Match
، تكون العملية غير مشروطة.
تحصل الاستجابة التالية على قيمة المفتاح فقط إذا تطابق التمثيل الحالي مع المحدد etag
:
GET /kv?key={key}&label={label}&api-version={api-version} HTTP/1.1
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
الاستجابات:
HTTP/1.1 412 PreconditionFailed
أو
HTTP/1.1 200 OK
تحصل الاستجابة التالية على قيم المفاتيح فقط إذا لم يتطابق التمثيل الحالي مع المحدد etag
:
GET /kv?key={key}&label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
الاستجابات:
HTTP/1.1 304 NotModified
أو
HTTP/1.1 200 OK
فصل الصفحات
يتم ترقيم النتيجة في حال تجاوز عدد العناصر التي تم إرجاعها حد الاستجابة. تتبع عناوين الاستجابة Link
الاختيارية واستخدم rel="next"
للتنقل.
بدلاً من ذلك، يوفر المحتوى ارتباطًا تاليًا في شكل الخاصية @nextLink
. يتضمن URI المرتبط الوسيطة api-version
.
GET /kv?api-version={api-version} HTTP/1.1
الاستجابة:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvs+json; charset=utf-8
Link: <{relative uri}>; rel="next"
{
"items": [
...
],
"@nextLink": "{relative uri}"
}
التصفية
يتم دعم مزيج من عامل التصفية key
وlabel
.
استخدم معلمات سلسلة الاستعلام الاختيارية key
وlabel
.
GET /kv?key={key}&label={label}&api-version={api-version}
يتم دعم مجموعة من key
و label
و و tags
التصفية.
استخدم معلمات سلسلة الاستعلام الاختيارية key
label
و وtags
.
يمكن توفير عوامل تصفية علامات متعددة كمعلمات سلسلة استعلام بالتنسيق tagName=tagValue
. يجب أن تكون عوامل تصفية العلامات مطابقة تماما.
GET /kv?key={key}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}
عوامل التصفيةِ المدعومة
عامل تصفية key | التأثير |
---|---|
تم حذف key أو key=* |
يطابق أي مفتاح |
key=abc |
يطابق مفتاحًا باسم abc |
key=abc* |
يُطابق أسماء key التي تبدأ بـ abc |
key=abc,xyz |
يُطابق أسماء key abc أو xyz (تقتصر على 5 CSV) |
عامل تصفية التسمية | التأثير |
---|---|
تم حذف label أو label=* |
يُطابق أي تسمية |
label=%00 |
يطابق قيم المفاتيح بدون تسمية |
label=prod |
يطابق التسمية prod |
label=prod* |
يطابق التسميات التي تبدأ بـ prod |
label=prod,test |
يطابق التسميات prod أو test (يقتصر على 5 CSV) |
عامل تصفية العلامات | التأثير |
---|---|
تم حذف tags أو tags= |
يطابق أي علامة |
tags=group=app1 |
يطابق قيم المفاتيح التي تحتوي على علامة تسمى group بقيمة app1 |
tags=group=app1&tags=env=prod |
يطابق قيم المفاتيح التي تحتوي على علامة مسماة group بقيمة app1 وعلامة مسماة env بقيمة prod (تقتصر على 5 عوامل تصفية علامات) |
tags=tag1=%00 |
يطابق قيم المفاتيح التي تحتوي على علامة تسمى tag1 بقيمة null |
tags=tag1= |
يطابق قيم المفاتيح التي تحتوي على علامة تسمى tag1 بقيمة فارغة |
حروف محجوزة
*
، ، \
,
في حال كان الحرف المحجوز جزءًا من القيمة، فيجب إلغاءه باستخدام \{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 /kv?api-version={api-version}
يبدأ اسم المفتاح بـ abc ويتضمن جميع التسميات
GET /kv?key=abc*&label=*&api-version={api-version}
يبدأ اسم المفتاح بـ abc وتسمية تساوي v1 أو v2
GET /kv?key=abc*&label=v1,v2&api-version={api-version}
طلب حقول خاصة
استخدم معلمة سلسلةِ الاستعلام الاختيارية $select
وقدم قائمة مفصولة بفواصل بالحقول المطلوبة. في حال تم حذف المعلمة $select
تحتوي الاستجابة على المجموعة الافتراضية.
GET /kv?$select=key,value&api-version={api-version} HTTP/1.1
الوصول استنادًا إلى الوقت
يمكنك الحصول على تمثيل النتيجة كما كانت في وقت سابق. لمزيد من المعلومات، راجع القسم 2.1.1. لا يزال ترقيم الصفحات معتمدًا كما هو محدد سابقًا في هذه المقالة.
GET /kv?api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 12 May 2018 02:10:00 GMT
الاستجابة:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kvset+json"
Memento-Datetime: Sat, 12 May 2018 02:10:00 GMT
Link: <{relative uri}>; rel="original"
{
"items": [
....
]
}
تعيين key
- مطلوب:
{key}
- اختياري:
label
(إذا لم يتم تحديده، أو label=٪00، فإنه يعني قيمة key بدون تسمية.)
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
{
"value": "example value", // optional
"content_type": "user defined", // optional
"tags": { // optional
"tag1": "value1",
"tag2": "value2",
}
}
الاستجابات:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
Last-Modified: Tue, 05 Dec 2017 02:41:26 GMT
ETag: "4f6dd610dd5e4deebc7fbaef685fb903"
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"key": "{key}",
"label": "{label}",
"content_type": "user defined",
"value": "example value",
"last_modified": "2017-12-05T02:41:26.4874615+00:00",
"tags": {
"tag1": "value1",
"tag2": "value2",
}
}
إذا تم تأمين العنصر، يتم إرجاع الاستجابة التالية:
HTTP/1.1 409 Conflict
Content-Type: application/problem+json; charset="utf-8"
{
"type": "https://azconfig.io/errors/key-locked",
"title": "Modifing key '{key}' is not allowed",
"name": "{key}",
"detail": "The key is read-only. To allow modification unlock it first.",
"status": 409
}
تعيين key (بشكل مشروط)
لمنع حالات التعارض، استخدم If-Match
أو If-None-Match
اطلب العناوين. الوسيطة etag
هي جزء من تمثيل key.
إذا تم حذف If-Match
أو If-None-Match
، تكون العملية غير مشروطة.
تقوم الاستجابة التالية بتحديث القيمة فقط إذا تطابق التمثيل الحالي مع etag
المحدد :
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
تحدث الاستجابة التالية القيمة فقط إذا لم تطابق التمثيل الحالي مع etag
المحدد:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json;
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
يضيف الطلب التالي القيمة فقط إذا كان هناك تمثيل موجود بالفعل:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json;
If-Match: "*"
يضيف الطلب التالي القيمة فقط إذا لم يكن هناك تمثيل موجود بالفعل:
PUT /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/vnd.microsoft.appconfig.kv+json
If-None-Match: "*"
الاستجابات
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...
أو
HTTP/1.1 412 PreconditionFailed
حذف
- مطلوب:
{key}
،{api-version}
- اختياري:
{label}
(إذا لم يتم تحديده، أو label=٪00، فإنه يعني قيمة key بدون تسمية.)
DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
الاستجابة: إرجاع قيمة key المحذوفة، أو لا شيء إذا لم تكن قيمة key موجودة.
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8
...
أو
HTTP/1.1 204 No Content
حذف key (بشكل مشروط)
يشبه هذا القسم "Set key (conditionally)" سابقًا في هذه المقالة.