多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Feature Flags API > 原文:[https://docs.gitlab.com/ee/api/feature_flags.html](https://docs.gitlab.com/ee/api/feature_flags.html) * [Feature Flags pagination](#feature-flags-pagination) * [List feature flags for a project](#list-feature-flags-for-a-project) * [Get a single feature flag](#get-a-single-feature-flag) * [Create a feature flag](#create-a-feature-flag) * [Update a feature flag](#update-a-feature-flag) * [Delete a feature flag](#delete-a-feature-flag) # Feature Flags API[](#feature-flags-api-premium "Permalink") [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/9566) in [GitLab Premium](https://about.gitlab.com/pricing/) 12.5. **注意:**此 API 位于[功能标志的](../operations/feature_flags.html#enable-or-disable-feature-flag-strategies)后面. 如果您的环境中未启用此标志,则可以使用[旧功能标志 API](feature_flags_legacy.html) . 用于访问[GitLab 功能标记](../operations/feature_flags.html)资源的 API. 具有开发者或更高[权限的用户](../user/permissions.html)可以访问功能标记 API. ## Feature Flags pagination[](#feature-flags-pagination "Permalink") 默认情况下,因为 API 结果是[分页的](README.html#pagination) ,所以`GET`请求一次返回 20 个结果. ## List feature flags for a project[](#list-feature-flags-for-a-project "Permalink") 获取所请求项目的所有功能标志. ``` GET /projects/:id/feature_flags ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . | | `scope` | string | no | 功能标志的条件,其中之一: `enabled` , `disabled` . | ``` curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/feature_flags" ``` 响应示例: ``` [ { "name":"merge_train", "description":"This feature is about merge train", "version": "new_version_flag", "created_at":"2019-11-04T08:13:51.423Z", "updated_at":"2019-11-04T08:13:51.423Z", "scopes":[], "strategies": [ { "id": 1, "name": "userWithId", "parameters": { "userIds": "user1" }, "scopes": [ { "id": 1, "environment_scope": "production" } ] } ] }, { "name":"new_live_trace", "description":"This is a new live trace feature", "version": "new_version_flag", "created_at":"2019-11-04T08:13:10.507Z", "updated_at":"2019-11-04T08:13:10.507Z", "scopes":[] "strategies": [ { "id": 2, "name": "default", "parameters": {}, "scopes": [ { "id": 2, "environment_scope": "staging" } ] } ] } ] ``` ## Get a single feature flag[](#get-a-single-feature-flag "Permalink") 获取单个功能标志. ``` GET /projects/:id/feature_flags/:name ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . | | `name` | string | yes | The name of the feature flag. | ``` curl --header "PRIVATE-TOKEN: <your_access_token>" https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature ``` 响应示例: ``` { "name": "awesome_feature", "description": null, "version": "new_version_flag", "created_at": "2020-05-13T19:56:33.119Z", "updated_at": "2020-05-13T19:56:33.119Z", "scopes": [], "strategies": [ { "id": 36, "name": "default", "parameters": {}, "scopes": [ { "id": 37, "environment_scope": "production" } ] } ] } ``` ## Create a feature flag[](#create-a-feature-flag "Permalink") 创建一个新的功能标志. ``` POST /projects/:id/feature_flags ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . | | `name` | string | yes | 功能标志的名称. | | `version` | string | yes | 功能标志的版本. 必须是`new_version_flag` . 省略或设置为`legacy_flag`即可创建[旧版功能标志](feature_flags_legacy.html) . | | `description` | string | no | 功能标志的描述. | | `strategies` | JSON | no | 特征标志[策略](../operations/feature_flags.html#feature-flag-strategies) . | | `strategies:name` | JSON | no | 策略名称. | | `strategies:parameters` | JSON | no | 策略参数. | | `strategies:scopes` | JSON | no | 策略的范围. | | `strategies:scopes:environment_scope` | string | no | 范围的环境规格. | ``` curl "https://gitlab.example.com/api/v4/projects/1/feature_flags" \ --header "PRIVATE-TOKEN: <your_access_token>" \ --header "Content-type: application/json" \ --data @- << EOF { "name": "awesome_feature", "version": "new_version_flag", "strategies": [{ "name": "default", "parameters": {}, "scopes": [{ "environment_scope": "production" }] }] } EOF ``` 响应示例: ``` { "name": "awesome_feature", "description": null, "version": "new_version_flag", "created_at": "2020-05-13T19:56:33.119Z", "updated_at": "2020-05-13T19:56:33.119Z", "scopes": [], "strategies": [ { "id": 36, "name": "default", "parameters": {}, "scopes": [ { "id": 37, "environment_scope": "production" } ] } ] } ``` ## Update a feature flag[](#update-a-feature-flag "Permalink") 更新功能标志. ``` PUT /projects/:id/feature_flags/:name ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . | | `name` | string | yes | 功能标志的名称. | | `description` | string | no | 功能标志的描述. | | `strategies` | JSON | no | 特征标志[策略](../operations/feature_flags.html#feature-flag-strategies) . | | `strategies:id` | JSON | no | 功能标记策略 ID. | | `strategies:name` | JSON | no | 策略名称. | | `strategies:parameters` | JSON | no | 策略参数. | | `strategies:scopes` | JSON | no | 策略的范围. | | `strategies:scopes:id` | JSON | no | 范围 ID. | | `strategies:scopes:environment_scope` | string | no | 范围的环境规格. | ``` curl "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature" \ --header "PRIVATE-TOKEN: <your_access_token>" \ --header "Content-type: application/json" \ --data @- << EOF { "strategies": [{ "name": "gradualRolloutUserId", "parameters": { "groupId": "default", "percentage": "25" }, "scopes": [{ "environment_scope": "staging" }] }] } EOF ``` 响应示例: ``` { "name": "awesome_feature", "description": null, "version": "new_version_flag", "created_at": "2020-05-13T20:10:32.891Z", "updated_at": "2020-05-13T20:10:32.891Z", "scopes": [], "strategies": [ { "id": 38, "name": "gradualRolloutUserId", "parameters": { "groupId": "default", "percentage": "25" }, "scopes": [ { "id": 40, "environment_scope": "staging" } ] }, { "id": 37, "name": "default", "parameters": {}, "scopes": [ { "id": 39, "environment_scope": "production" } ] } ] } ``` ## Delete a feature flag[](#delete-a-feature-flag "Permalink") 删除功能标志. ``` DELETE /projects/:id/feature_flags/:name ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | integer/string | yes | 项目的 ID 或[URL 编码的路径](README.html#namespaced-path-encoding) . | | `name` | string | yes | 功能标志的名称. | ``` curl --header "PRIVATE-TOKEN: <your_access_token>" --request DELETE "https://gitlab.example.com/api/v4/projects/1/feature_flags/awesome_feature" ```