프로젝트 위키 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 프로젝트 위키를 관리합니다. 위키 페이지의 댓글은 notes라고 합니다. 지정된 프로젝트의 모든 위키 페이지를 나열합니다. 프로젝트의 지정된 위키 페이지를 조회합니다. 지정된 프로젝트에 제목, 슬러그, 콘텐츠를 사용하여 위키 페이지를 만듭니다.
이 API를 사용하여 프로젝트 위키를 관리합니다. 그룹 위키를 위한 API도 사용 가능합니다.
위키 페이지의 댓글은 notes라고 합니다. 이와 상호 작용하려면 노트 API를 사용합니다.
모든 위키 페이지 목록 조회#
지정된 프로젝트의 모든 위키 페이지를 나열합니다.
GET /projects/:id/wikis
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
with_content |
boolean | 아니요 | 페이지 콘텐츠를 포함합니다. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/wikis?with_content=1"
응답 예시:
[
{
"content" : "Here is an instruction how to deploy this project.",
"format" : "markdown",
"slug" : "deploy",
"title" : "deploy",
"encoding": "UTF-8"
},
{
"content" : "Our development process is described here.",
"format" : "markdown",
"slug" : "development",
"title" : "development",
"encoding": "UTF-8"
},
{
"content" : "* [Deploy](deploy)\n* [Development](development)",
"format" : "markdown",
"slug" : "home",
"title" : "home",
"encoding": "UTF-8"
}
]
위키 페이지 조회#
프로젝트의 지정된 위키 페이지를 조회합니다.
GET /projects/:id/wikis/:slug
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
slug |
string | 예 | URL 인코딩된 슬러그(고유 문자열)(예: dir%2Fpage_name). |
render_html |
boolean | 아니요 | 위키 페이지의 렌더링된 HTML을 반환합니다. |
version |
string | 아니요 | 위키 페이지 버전 SHA. |
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/wikis/home"
응답 예시:
{
"content" : "home page",
"format" : "markdown",
"slug" : "home",
"title" : "home",
"encoding": "UTF-8"
}
위키 페이지 만들기#
지정된 프로젝트에 제목, 슬러그, 콘텐츠를 사용하여 위키 페이지를 만듭니다.
POST /projects/:id/wikis
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
content |
string | 예 | 위키 페이지의 콘텐츠. |
title |
string | 예 | 위키 페이지의 제목. |
format |
string | 아니요 | 위키 페이지의 형식. 사용 가능한 형식: markdown(기본값), rdoc, asciidoc, org. |
curl --data "format=rdoc&title=Hello&content=Hello world" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/wikis"
응답 예시:
{
"content" : "Hello world",
"format" : "markdown",
"slug" : "Hello",
"title" : "Hello",
"encoding": "UTF-8"
}
특수 문자와 다이어그램이 포함된 Markdown 콘텐츠의 경우 인코딩을 자동으로 처리하기 위해 파일 참조와 함께 --data-urlencode를 사용합니다.
예를 들어 위키 콘텐츠가 포함된 content.md 파일을 만들고 다음을 실행합니다:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data-urlencode "title=Page with Complex Content" \
--data-urlencode "content@content.md" \
--url "https://gitlab.example.com/api/v4/projects/1/wikis"
--data-urlencode "content@content.md" 옵션은 Markdown 파일의 내용을 URL 인코딩하고 content 속성에 할당합니다.
이 인코딩은 그렇지 않으면 오류를 일으킬 수 있는 특수 문자, 줄 바꿈, 복잡한 Markdown 구문을 처리합니다.
응답 예시:
{
"content": "<contents of content.md>",
"format": "markdown",
"slug": "Page-with-Complex-Content",
"title": "Page with Complex Content",
"encoding": "UTF-8"
}
위키 페이지 업데이트#
지정된 위키 페이지를 업데이트합니다. 위키 페이지를 업데이트하려면 하나 이상의 매개변수가 필요합니다.
PUT /projects/:id/wikis/:slug
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
content |
string | 예(title이 제공되지 않은 경우) |
위키 페이지의 콘텐츠. |
title |
string | 예(content가 제공되지 않은 경우) |
위키 페이지의 제목. |
format |
string | 아니요 | 위키 페이지의 형식. 사용 가능한 형식: markdown(기본값), rdoc, asciidoc, org. |
slug |
string | 예 | URL 인코딩된 슬러그(고유 문자열)(예: dir%2Fpage_name). |
curl --request PUT \
--data "format=rdoc&content=documentation&title=Docs" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/wikis/foo"
응답 예시:
{
"content" : "documentation",
"format" : "markdown",
"slug" : "Docs",
"title" : "Docs",
"encoding": "UTF-8"
}
위키 페이지 삭제#
지정된 위키 페이지를 삭제합니다.
DELETE /projects/:id/wikis/:slug
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
slug |
string | 예 | URL 인코딩된 슬러그(고유 문자열)(예: dir%2Fpage_name). |
curl --request DELETE \
--header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/1/wikis/foo"
성공하면 빈 본문과 함께 204 No Content HTTP 응답이 예상됩니다.
위키 리포지터리에 첨부 파일 업로드#
위키의 리포지터리 내 첨부 폴더에 파일을 업로드합니다. 첨부 폴더는 uploads 폴더입니다.
POST /projects/:id/wikis/attachments
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
integer or string | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
file |
string | 예 | 업로드할 첨부 파일. |
branch |
string | 아니요 | 브랜치 이름. 기본적으로 위키 리포지터리의 기본 브랜치입니다. |
파일 시스템에서 파일을 업로드하려면 --form 인수를 사용합니다. 이렇게 하면 cURL이 Content-Type: multipart/form-data 헤더를 사용하여 데이터를 게시합니다.
file= 매개변수는 파일 시스템의 파일을 가리켜야 하며 @ 앞에 있어야 합니다. 예:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--form "file=@dk.png" \
--url "https://gitlab.example.com/api/v4/projects/1/wikis/attachments"
응답 예시:
{
"file_name" : "dk.png",
"file_path" : "uploads/6a061c4cf9f1c28cb22c384b4b8d4e3c/dk.png",
"branch" : "main",
"link" : {
"url" : "uploads/6a061c4cf9f1c28cb22c384b4b8d4e3c/dk.png",
"markdown" : ""
}
}
