프로젝트 위키 API
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
이 API를 사용하면 프로젝트 위키를 관리합니다. 위키 페이지에 달린 댓글은 notes 라고 합니다. 지정한 프로젝트의 모든 위키 페이지를 조회합니다. 프로젝트의 지정한 위키 페이지를 조회합니다. 지정한 프로젝트에 주어진 제목, 슬러그, 콘텐츠로 위키 페이지를 생성합니다.
이 API를 사용하면 프로젝트 위키를 관리합니다. 그룹 위키용 API도 제공됩니다.
위키 페이지에 달린 댓글은 notes 라고 합니다. 댓글을 다루려면 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 | 예 | dir%2Fpage_name과 같이 URL 인코딩된 위키 페이지 슬러그(고유 문자열)입니다. |
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 | Yes, if title is not provided |
위키 페이지의 콘텐츠입니다. |
title |
string | Yes, if content is not provided |
위키 페이지의 제목입니다. |
format |
string | 아니요 | 위키 페이지의 형식입니다. 사용 가능한 형식은 markdown(기본값), rdoc, asciidoc, org 입니다. |
slug |
string | 예 | dir%2Fpage_name과 같이 URL 인코딩된 위키 페이지 슬러그(고유 문자열)입니다. |
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 | 예 | dir%2Fpage_name과 같이 URL 인코딩된 위키 페이지 슬러그(고유 문자열)입니다. |
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" : ""
}
}