Ulepszone flagi funkcji

Rozszerzone flagi funkcji nie są dostępne w tej wersji API.

Rozszerzona flaga cech to zasób identyfikowany przez unikalną kombinację .name + label Element label jest opcjonalny. Aby jawnie odwołać się do flagi cechy bez etykiety, użyj \0 (URL zakodowanego jako %00). W przypadku operacji z listą pomijanie label dopasowań flag cech z dowolną etykietą. Zobacz szczegóły każdej operacji.

Ważna

Rozszerzone flagi funkcji są dostępne tylko w 2026-05-01-preview wersji API.

W przypadku historycznych reprezentacji zobacz Ulepszone rewizje flagi funkcji. Aby wymienić etykiety powiązane z rozszerzonymi flagami funkcji, zobacz Etykiety.

Operations

  • Pobierz
  • Lista wielu
  • Set
  • Usuń

Wymagania wstępne

  • Wszystkie żądania HTTP muszą być uwierzytelnione. Zobacz sekcję uwierzytelniania .
  • Wszystkie żądania HTTP muszą podać jawne api-version. Zobacz sekcję przechowywanie wersji.

Syntax

Flaga funkcjonalności

{
  "etag": [string, optional, read-only],
  "name": [string, read-only],
  "enabled": [boolean],
  "label": [string, optional, read-only],
  "description": [string, optional],
  "conditions": [Conditions, optional],
  "variants": [array<Variant>, optional],
  "allocation": [Allocation, optional],
  "telemetry": [Telemetry, optional],
  "tags": [object<string, string>, optional],
  "last_modified": [datetime ISO 8601, optional, read-only]
}

Conditions

{
  "requirement_type": [string, enum("Any", "All"), optional],
  "filters": [array<FeatureFilter>, optional]
}

FeatureFilter

{
  "name": [string],
  "parameters": [object<string, string>, optional]
}

Variant

{
  "name": [string],
  "value": [string, optional],
  "content_type": [string, optional],
  "status_override": [string, enum("None", "Enabled", "Disabled"), optional]
}

Alokacja

{
  "default_when_disabled": [string, optional],
  "default_when_enabled": [string, optional],
  "percentile": [array<PercentileAllocation>, optional],
  "user": [array<UserAllocation>, optional],
  "group": [array<GroupAllocation>, optional],
  "seed": [string, optional]
}

PercentileAllocation

{
  "variant": [string],
  "from": [number, range(0, 100)],
  "to": [number, range(0, 100)]
}

UserAllocation

{
  "variant": [string],
  "users": [array<string>]
}

GroupAllocation

{
  "variant": [string],
  "groups": [array<string>]
}

Telemetry

{
  "enabled": [boolean],
  "metadata": [object<string, string>, optional]
}

Pobierz flagę funkcji

Wymagane: {name}, {api-version}

Opcjonalnie: label (Jeśli zostanie pominięta, oznacza to flagę cech bez etykiety.)

Opcjonalnie: tags (Jeśli nie zostanie określony, oznacza to jakiekolwiek tagi).

Wymagania name i label muszą dokładnie się zgadzać przed tags zastosowaniem dodatkowego filtrowania. Aby uzyskać więcej opcji, zobacz sekcję "Filtrowanie" w dalszej części tego artykułu.

GET /ff/{name}?label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}

Odpowiedzi:

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"; charset=utf-8
Last-Modified: Fri, 01 May 2026 16:52:32 GMT
ETag: "7XpB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
{
  "etag": "7XpB48ET4VAlB9068ft6fKMyA3m",
  "name": "{name}",
  "enabled": true,
  "label": "{label}",
  "description": "{description}",
  "tags": {
    "t1": "value1"
  },
  "last_modified": "2026-05-01T16:52:32Z"
}

Jeśli flaga cech nie istnieje, zwracana jest następująca odpowiedź:

HTTP/1.1 404 Not Found

Pobieranie (warunkowo)

Aby ulepszyć buforowanie klienta, użyj If-Match nagłówków lub If-None-Match żądań. Argument ten etag jest częścią reprezentacji flagi charakterystycznej. Jeśli oba nagłówki zostaną pominięte, operacja jest bezwarunkowa.

Następująca prośba pobiera flagę funkcji tylko wtedy, gdy aktualna reprezentacja nie odpowiada określonej etag:

GET /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Accept: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-None-Match: "{etag}"

Odpowiedzi:

HTTP/1.1 304 Not Modified

lub

HTTP/1.1 200 OK

Lista flag cech

Opcjonalnie: name (Jeśli nie jest to określone, oznacza to dowolną nazwę flagi cechy.)

Opcjonalnie: label (Jeśli nie zostanie określony, oznacza to dowolną etykietę).

Opcjonalnie: tags (Jeśli nie zostanie określony, oznacza to jakiekolwiek tagi).

GET /ff?name=Test*&label=*&tags=tag1=value1&tags=tag2=value2&api-version={api-version} HTTP/1.1

Odpowiedź:

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ffset"; charset=utf-8
ETag: "1PlB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
{
  "items": [
    {
      "etag": "7XpB48ET4VAlB9068ft6fKMyA3m",
      "name": "{name}",
      "enabled": true,
      "label": "{label}",
      "tags": {
        "t1": "value1"
      },
      "last_modified": "2026-05-01T16:52:32Z"
    }
  ],
  "etag": "1PlB48ET4VAlB9068ft6fKMyA3m",
  "@nextLink": "{relative uri}"
}

Aby uzyskać więcej opcji, zobacz sekcję "Filtrowanie" w dalszej części tego artykułu.

Lista flagi cech (warunkowo)

Aby ulepszyć buforowanie klienta, użyj If-Match nagłówków lub If-None-Match żądań. Argument etag jest częścią treści i nagłówka listy odpowiedzi. Jeśli oba nagłówki zostaną pominięte, operacja jest bezwarunkowa.

Następujące żądanie pobiera flagi cech tylko wtedy, gdy aktualna reprezentacja odpowiada określonym etag:

GET /ff?name={name}&label={label}&api-version={api-version} HTTP/1.1
If-Match: "{etag}"

Odpowiedzi:

HTTP/1.1 412 Precondition Failed

lub

HTTP/1.1 200 OK

Następujące żądanie otrzymuje flagi cech tylko wtedy, gdy aktualna reprezentacja nie odpowiada określonej etag:

GET /ff?name={name}&label={label}&api-version={api-version} HTTP/1.1
If-None-Match: "{etag}"

Odpowiedzi:

HTTP/1.1 304 Not Modified

lub

HTTP/1.1 200 OK

Paginacja

Wynik jest podzielony na strony, jeśli liczba zwracanych elementów przekracza limit odpowiedzi. Podążaj za opcjonalnym Link nagłówkiem odpowiedzi i używaj rel="next" do nawigacji. Alternatywnie, treść dostarcza następnego linku w postaci @nextLink właściwości. Połączony identyfikator URI zawiera api-version argument .

GET /ff?api-version={api-version} HTTP/1.1

Odpowiedź:

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ffset"; charset=utf-8
Link: <{relative uri}>; rel="next"
{
  "items": [
    ...
  ],
  "@nextLink": "{relative uri}"
}

Filtrowanie

Obsługiwana jest kombinacja funkcji name, labeli tags filtrowania. Użyj opcjonalnych nameparametrów ciągu , labeli tags ciągu zapytania. W formacie można podać wiele filtrów tagów jako parametry tagName=tagValue ciągu zapytania. Filtry tagów muszą być dokładnie zgodne.

GET /ff?name={name}&label={label}&tags={tagFilter1}&tags={tagFilter2}&api-version={api-version}

Obsługiwane filtry

Filtr nazw Efekt
Element name jest pomijany lub name=* Pasuje do dowolnej nazwy flagi charakterystycznej
name=abc Pasuje do flagi charakterystycznej o nazwie ABC
name=abc* Mecze zawierają nazwy flag zaczynające się na abc
name=abc,xyz Mecze mają nazwy flag abc lub xyz (ograniczone do 5 CSV)
Filtr etykiet Efekt
Element label jest pomijany lub label=* Pasuje do dowolnej etykiety
label=%00 Mecze mają flagi bez etykiety
label=prod Pasuje do etykiety prod
label=prod* Dopasuj etykiety rozpoczynające się od prod
label=prod,test Dopasuj etykiety prod lub test (ograniczone do 5 CSV)
Filtr tagów Efekt
Element tags jest pomijany lub tags= Pasuje do dowolnego tagu
tags=group=app1 Mecze zawierają flagi, które mają tag group nazwany wartością app1
tags=group=app1&tags=env=prod Dopasowania mają flagi, które mają tag group nazwany wartością app1 oraz tag env oznaczony wartością prod (ograniczony do 5 filtrów tagów)
tags=tag1=%00 Mecze zawierają flagi, które mają tag tag1 nazwany wartością null
tags=tag1= Mecze zawierają flagi, które mają tag nazwany tag1 pustą wartością

Zastrzeżone znaki

*, \, ,

Jeśli zastrzeżony znak jest częścią wartości, należy go uniknić za pomocą polecenia \{Reserved Character}. Znaki inne niż zastrzeżone mogą być również ucieczki.

Walidacja filtru

Jeśli sprawdzanie poprawności filtru zakończy się niepowodzeniem, odpowiedź to HTTP 400 ze szczegółami błędu:

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
}

Examples

  • Wszystko

    GET /ff?api-version={api-version}
    
  • Nazwa flagi charakterystycznej zaczyna się od abc i obejmuje wszystkie etykiety

    GET /ff?name=abc*&label=*&api-version={api-version}
    
  • Nazwa flagi funkcji zaczyna się od abc , a etykieta równa się v1 lub v2

    GET /ff?name=abc*&label=v1,v2&api-version={api-version}
    

Żądanie określonych pól

Użyj opcjonalnego $select parametru ciągu zapytania i podaj rozdzielaną przecinkami listę żądanych pól. $select Jeśli parametr zostanie pominięty, odpowiedź zawiera zestaw domyślny. Ciała wspierane to name, enabled, label, description, conditionsvariants, allocation, , telemetry, tags, , last_modified, oraz .etag

GET /ff?$select=name,enabled,label&api-version={api-version} HTTP/1.1

Parametr jest $select wspierany przez GET żądania pojedynczej flagi cech oraz kolekcji flag cech.

Dostęp oparty na czasie

Uzyskaj reprezentację wyniku w przeszłości. Aby uzyskać więcej informacji, zobacz sekcję 2.1.1. Stronicowanie jest nadal obsługiwane zgodnie z definicją wcześniej w tym artykule.

GET /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 01 Aug 2026 02:10:00 GMT
GET /ff?api-version={api-version} HTTP/1.1
Accept-Datetime: Sat, 01 Aug 2026 02:10:00 GMT

Ustaw flagę funkcji

  • Wymagane: {name}, {api-version}
  • Opcjonalnie: label (Jeśli nie jest to określone lub label=%00, oznacza to flagę cech bez etykiety.)

Właściwość jest enabled wymagana w treści żądania. Właściwości description, conditions, variants, allocation, telemetry, , oraz tags są opcjonalne. Nie włączaj name, label, etag, ani last_modified do treści żądania.

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
{
  "enabled": true,
  "description": "{description}",
  "conditions": {
    "requirement_type": "All",
    "filters": [
      {
        "name": "Microsoft.Targeting",
        "parameters": {
          "Audience": "{\"Users\":[\"User1\",\"User2\"],\"Groups\":[{\"Name\":\"Ring0\",\"RolloutPercentage\":100}],\"DefaultRolloutPercentage\":20,\"Exclusion\":{\"Users\":[\"ExcludedUser\"],\"Groups\":[\"Ring1\"]}}"
        }
      }
    ]
  },
  "variants": [
    {
      "name": "On",
      "value": "true",
      "content_type": "application/json",
      "status_override": "None"
    },
    {
      "name": "Off",
      "value": "false",
      "content_type": "application/json",
      "status_override": "Disabled"
    }
  ],
  "allocation": {
    "default_when_disabled": "Off",
    "default_when_enabled": "On",
    "percentile": [
      {
        "variant": "On",
        "from": 0,
        "to": 80
      },
      {
        "variant": "Off",
        "from": 80,
        "to": 100
      }
    ],
    "seed": "{name}"
  },
  "telemetry": {
    "enabled": true,
    "metadata": {
      "Tags.Environment": "production"
    }
  },
  "tags": {
    "t1": "value1"
  }
}

Odpowiedzi:

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"; charset=utf-8
Last-Modified: Fri, 01 May 2026 16:52:32 GMT
ETag: "7XpB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
{
  "etag": "7XpB48ET4VAlB9068ft6fKMyA3m",
  "name": "{name}",
  "enabled": true,
  "label": "{label}",
  "description": "{description}",
  "conditions": {
    "requirement_type": "All",
    "filters": [
      {
        "name": "Microsoft.Targeting",
        "parameters": {
          "Audience": "{\"Users\":[\"User1\",\"User2\"],\"Groups\":[{\"Name\":\"Ring0\",\"RolloutPercentage\":100}],\"DefaultRolloutPercentage\":20,\"Exclusion\":{\"Users\":[\"ExcludedUser\"],\"Groups\":[\"Ring1\"]}}"
        }
      }
    ]
  },
  "variants": [
    {
      "name": "On",
      "value": "true",
      "content_type": "application/json",
      "status_override": "None"
    },
    {
      "name": "Off",
      "value": "false",
      "content_type": "application/json",
      "status_override": "Disabled"
    }
  ],
  "allocation": {
    "default_when_disabled": "Off",
    "default_when_enabled": "On",
    "percentile": [
      {
        "variant": "On",
        "from": 0,
        "to": 80
      },
      {
        "variant": "Off",
        "from": 80,
        "to": 100
      }
    ],
    "seed": "{name}"
  },
  "telemetry": {
    "enabled": true,
    "metadata": {
      "Tags.Environment": "production"
    }
  },
  "tags": {
    "t1": "value1"
  },
  "last_modified": "2026-05-01T16:52:32Z"
}

Ustaw flagę cech (warunkowo)

Aby zapobiec warunkom wyścigu, użyj If-Match nagłówków lub If-None-Match zażądaj. Argument ten etag jest częścią reprezentacji flagi charakterystycznej. Jeśli oba nagłówki zostaną pominięte, operacja jest bezwarunkowa.

Następujące żądanie ustawia flagę cechy tylko wtedy, gdy aktualna reprezentacja odpowiada określonym etag:

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-Match: "{etag}"

Następująca prośba ustawia flagę cechy tylko wtedy, gdy aktualna reprezentacja nie odpowiada określonej etag:

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-None-Match: "{etag}"

Następujące żądanie ustawia flagę funkcji tylko wtedy, gdy reprezentacja już istnieje:

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-Match: "*"

Następująca prośba ustawia flagę funkcji tylko wtedy, gdy reprezentacja nie istnieje:

PUT /ff/{name}?label={label}&api-version={api-version} HTTP/1.1
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"
If-None-Match: "*"

Odpowiedzi

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"; charset=utf-8
Last-Modified: Fri, 01 May 2026 16:52:32 GMT
ETag: "7XpB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
...

lub

HTTP/1.1 412 Precondition Failed

Usuń

  • Wymagane: {name}, {api-version}
  • Opcjonalnie: label (Jeśli nie jest to określone lub label=%00, oznacza to flagę cech bez etykiety.)
DELETE /ff/{name}?label={label}&api-version={api-version} HTTP/1.1

Odpowiedź: Przywróć flagę usuniętej funkcji lub żadną, jeśli flaga funkcji nie istniała.

HTTP/1.1 200 OK
Content-Type: application/json; profile="https://azconfig.io/mime-profiles/ff"; charset=utf-8
Last-Modified: Fri, 01 May 2026 16:52:32 GMT
ETag: "7XpB48ET4VAlB9068ft6fKMyA3m"
Sync-Token: zAJw6V16=NjotMSM3ODk3NjM=;sn=789763
...

lub

HTTP/1.1 204 No Content

Usuń flagę funkcji (warunkowo)

Jest to podobne do sekcji "Ustaw flagę cech (warunkowo)" wcześniej w tym artykule. Operacja usuwania obsługuje nagłówek If-Match żądania.

Aby uzyskać informacje o nagłówkach żądań i odpowiedzi współdzielonych przez operacje na płaszczyźnie danych App Configuration, zobacz nagłówki Common.