# Project snippets > 原文:[https://docs.gitlab.com/ee/api/project_snippets.html](https://docs.gitlab.com/ee/api/project_snippets.html) * [Snippet visibility level](#snippet-visibility-level) * [List snippets](#list-snippets) * [Single snippet](#single-snippet) * [Create new snippet](#create-new-snippet) * [Update snippet](#update-snippet) * [Delete snippet](#delete-snippet) * [Snippet content](#snippet-content) * [Snippet repository file content](#snippet-repository-file-content) * [Get user agent details](#get-user-agent-details) # Project snippets[](#project-snippets "Permalink") ## Snippet visibility level[](#snippet-visibility-level "Permalink") GitLab 中的片段可以是私有的,内部的或公共的. 您可以使用代码段中的`visibility`字段进行设置. 摘要可见性级别的常量为: | visibility | Description | | --- | --- | | `private` | 该代码段仅在代码段创建者中可见 | | `internal` | 所有已登录的用户都可以看到该代码段 | | `public` | 无需任何身份验证即可访问该代码段 | **注意:**从 2019 年 7 月开始,GitLab.com 上的新项目,组和摘要的`` `Internal`可见性''设置被禁用. 使用" `Internal`可见性"设置的现有项目,组和摘录保留此设置. 您可以在[相关问题中](https://gitlab.com/gitlab-org/gitlab/-/issues/12388)阅读有关更改的更多信息. ## List snippets[](#list-snippets "Permalink") 获取项目摘要列表. ``` GET /projects/:id/snippets ``` Parameters: * `id` (必填)-经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) ## Single snippet[](#single-snippet "Permalink") 获得一个项目片段. ``` GET /projects/:id/snippets/:snippet_id ``` Parameters: * `id` (必填)-经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) * `snippet_id` (必填)-项目代码段的 ID ``` { "id": 1, "title": "test", "file_name": "add.rb", "description": "Ruby test snippet", "author": { "id": 1, "username": "john_smith", "email": "john@example.com", "name": "John Smith", "state": "active", "created_at": "2012-05-23T08:00:58Z" }, "updated_at": "2012-06-28T10:52:04Z", "created_at": "2012-06-28T10:52:04Z", "project_id": 1, "web_url": "http://example.com/example/example/snippets/1", "raw_url": "http://example.com/example/example/snippets/1/raw" } ``` ## Create new snippet[](#create-new-snippet "Permalink") 创建一个新的项目片段. 用户必须具有创建新代码段的权限. ``` POST /projects/:id/snippets ``` Parameters: * `id` (必填)-经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) * `title` (required) - The title of a snippet * `file_name` (必填)-代码段文件的名称 * `description` (可选)-代码段的说明 * `content` (必填)-代码段的内容 * `visibility` (必填)-代码段的可见性 请求示例: ``` curl --request POST "https://gitlab.com/api/v4/projects/:id/snippets" \ --header "PRIVATE-TOKEN: " \ --header "Content-Type: application/json" \ -d @snippet.json ``` 上面的示例请求中使用的`snippet.json` : ``` { "title" : "Example Snippet Title", "description" : "More verbose snippet description", "file_name" : "example.txt", "content" : "source code \n with multiple lines\n", "visibility" : "private" } ``` ## Update snippet[](#update-snippet "Permalink") 更新现有的项目代码段. 用户必须具有更改现有代码段的权限. ``` PUT /projects/:id/snippets/:snippet_id ``` Parameters: * `id` (必填)-经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) * `snippet_id` (必填)-项目代码段的 ID * `title` (可选)-摘要的标题 * `file_name` (可选)-代码段文件的名称 * `description` (可选)-代码段的说明 * `content` (可选)-代码段的内容 * `visibility` (可选)-代码段的可见性 请求示例: ``` curl --request PUT "https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id" \ --header "PRIVATE-TOKEN: " \ --header "Content-Type: application/json" \ -d @snippet.json ``` 上面的示例请求中使用的`snippet.json` : ``` { "title" : "Updated Snippet Title", "description" : "More verbose snippet description", "file_name" : "new_filename.txt", "content" : "updated source code \n with multiple lines\n", "visibility" : "private" } ``` ## Delete snippet[](#delete-snippet "Permalink") 删除现有项目片段. 如果操作成功,则返回`204 No Content`状态代码;如果找不到资源,则返回`404` . ``` DELETE /projects/:id/snippets/:snippet_id ``` Parameters: * `id` (必填)-经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) * `snippet_id` (必填)-项目代码段的 ID 请求示例: ``` curl --request DELETE "https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id" \ --header "PRIVATE-TOKEN: " ``` ## Snippet content[](#snippet-content "Permalink") 以纯文本形式返回原始项目代码段. ``` GET /projects/:id/snippets/:snippet_id/raw ``` Parameters: * `id` (必填)-经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) * `snippet_id` (必填)-项目代码段的 ID 请求示例: ``` curl "https://gitlab.com/api/v4/projects/:id/snippets/:snippet_id/raw" \ --header "PRIVATE-TOKEN: " ``` ## Snippet repository file content[](#snippet-repository-file-content "Permalink") 以纯文本形式返回原始文件的内容. ``` GET /projects/:id/snippets/:snippet_id/files/:ref/:file_path/raw ``` Parameters: * `id` (必填)-经过身份验证的用户拥有[的项目](README.html#namespaced-path-encoding)的 ID 或[URL 编码路径](README.html#namespaced-path-encoding) * `snippet_id` (必填)-项目代码段的 ID * `ref` (必填)-分支,标记或提交的名称,例如 master * `file_path` (必填)-文件的 URL 编码路径,例如 snippet%2Erb 请求示例: ``` curl "https://gitlab.com/api/v4/projects/1/snippets/2/files/master/snippet%2Erb/raw" \ --header "PRIVATE-TOKEN: " ``` ## Get user agent details[](#get-user-agent-details "Permalink") 在 GitLab 9.4 中[引入](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/29508) . 仅适用于管理员. ``` GET /projects/:id/snippets/:snippet_id/user_agent_detail ``` | Attribute | Type | Required | Description | | --- | --- | --- | --- | | `id` | Integer | yes | 项目 ID | | `snippet_id` | Integer | yes | 片段的 ID | 请求示例: ``` curl --header "PRIVATE-TOKEN: " "https://gitlab.example.com/api/v4/projects/1/snippets/2/user_agent_detail" ``` 响应示例: ``` { "user_agent": "AppleWebKit/537.36", "ip_address": "127.0.0.1", "akismet_submitted": false } ```