다음을 통해 공유


키-값

키-값은 고유한 조합으로 식별되는 리소스입니다 key + label. label은(는) 선택 사항입니다. 레이블 없이 키-값을 명시적으로 참조하려면 "\0"(%00으로 인코딩된 URL)을 사용합니다. 각 작업에 대한 세부 정보를 참조하세요.

작업

  • Get
  • 여러 목록
  • 설정
  • 삭제

필수 조건

  • 모든 HTTP 요청은 인증되어야 합니다. 인증 섹션을 참조하세요.
  • 모든 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}, {api-version}
선택 사항: label (생략하면 레이블이 없는 키-값을 의미합니다.)

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"
  }
}

키가 없으면 다음 응답이 반환됩니다.

HTTP/1.1 404 Not Found

가져오기(조건부)

클라이언트 캐싱을 향상시키려면 If-Match 또는 If-None-Match 요청 헤더를 사용합니다. etag 인수는 키 표현의 일부입니다. 자세한 내용은 섹션 14.24 및 14.26을 참조하세요.

다음 요청은 현재 표현이 지정된 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 (지정하지 않은 경우 임의 키 의미)

옵션: 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}"
}

필터링

keylabel 필터링의 조합이 지원됩니다. 선택적 keylabel 쿼리 문자열 매개 변수를 사용합니다.

GET /kv?key={key}&label={label}&api-version={api-version}

, labeltags 필터링의 key조합이 지원됩니다. 선택적 key, labeltags 쿼리 문자열 매개 변수를 사용합니다. 여러 태그 필터를 형식의 쿼리 문자열 매개 변수 tagName=tagValue 로 제공할 수 있습니다. 태그 필터는 정확히 일치해야 합니다.

GET /kv?key={key}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}

지원되는 필터

키 필터 효과
key은 생략 또는 key=* 모든 키와 일치
key=abc abc라는 이름의 키와 일치
key=abc* abc로 시작하는 키 이름과 일치
key=abc,xyz 키 이름 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 태그 env 가 있는 키-값 app1 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}
  • 선택 사항: label (지정하지 않았거나 label=%00이면 레이블이 없는 키-값을 의미합니다.)
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
}

키 설정(조건부)

경합 상태를 방지하려면 헤더를 사용 If-Match 하거나 If-None-Match 요청합니다. etag 인수는 키 표현의 일부입니다. 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이면 레이블이 없는 키-값을 의미합니다.)
DELETE /kv/{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
...

또는

HTTP/1.1 204 No Content

키 삭제(조건부)

이는 이 문서의 앞부분에 있는 "키 설정(조건부)" 섹션과 비슷합니다.