Блокировки
Этот API предоставляет семантику блокировки и разблокировки для ресурса key-value. Поддерживаются следующие операции:
- установка блокировки;
- снятие блокировки.
Если параметр label
указан, он должен быть явным значением метки (не подстановочным знаком). Для всех операций это необязательный параметр. Если он не указан, подразумевается любая метка.
Необходимые компоненты
- Все HTTP-запросы должны пройти проверку подлинности. См. раздел об аутентификации.
- Все HTTP-запросы должны предоставлять явный запрос
api-version
. См. раздел о версионировании.
Блокировка пары "ключ-значение"
- Требуется:
{key}
,{api-version}
- Необязательный:
label
PUT /locks/{key}?label={label}&api-version={api-version} HTTP/1.1
Ответы:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8"
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"key": "{key}",
"label": "{label}",
"content_type": null,
"value": "example value",
"created": "2017-12-05T02:41:26.4874615+00:00",
"locked": true,
"tags": []
}
Если пара "ключ-значение" не существует, возвращается следующий ответ:
HTTP/1.1 404 Not Found
Разблокировка пары "ключ-значение"
- Требуется:
{key}
,{api-version}
- Необязательный:
label
DELETE /locks/{key}?label={label}?api-version={api-version} HTTP/1.1
Ответы:
HTTP/1.1 200 OK
Content-Type: application/vnd.microsoft.appconfig.kv+json; charset=utf-8"
{
"etag": "4f6dd610dd5e4deebc7fbaef685fb903",
"key": "{key}",
"label": "{label}",
"content_type": null,
"value": "example value",
"created": "2017-12-05T02:41:26.4874615+00:00",
"locked": true,
"tags": []
}
Если пара "ключ-значение" не существует, возвращается следующий ответ:
HTTP/1.1 404 Not Found
Условная блокировка и разблокировка
Чтобы избегать состояний гонки, используйте заголовки запроса If-Match
или If-None-Match
. Аргумент etag
является частью представления ключа. Если If-Match
или If-None-Match
опущены, операция является безусловной.
Следующий запрос применяет операцию только в том случае, если текущее представление "ключ-значение" соответствует указанному etag
:
PUT|DELETE /locks/{key}?label={label}&api-version={api-version} HTTP/1.1
If-Match: "4f6dd610dd5e4deebc7fbaef685fb903"
Следующий запрос применяет операцию только в том случае, если текущее представление "ключ-значение" существует, но не соответствует указанному etag
:
PUT|DELETE /kv/{key}?label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "4f6dd610dd5e4deebc7fbaef685fb903"