
Возможно, вы использовали Gitlab Repository API, чтобы сделать что-то полезное. Для тех из вас, кто до сих пор не использовал Repository API, он очень полезен для выполнения операций CRUD, то есть вы можете Cсоздавать, Rчитать, обновлятьpdate, удалять удалять файлы удаленного репозитория с помощью REST API без фактического клонирования git всего репозитория.
На странице API приведены примеры операций GET, PUT, POST и DELETE с использованием команд CURL в bash, но может быть ваше приложение работает на Javascript, и вам необходимо преобразовать команды CURL в простой сценарий JS. Это руководство дает вам прямой перевод команды CURL в Javascript с использованием fetch API.
1. GET /projects/:id/repository/files/:file_path
Допустим, вы хотите получить содержимое файла apptest_refdata.json из приведенного ниже проекта. URL.

URL
https://main.gitlab.in.org.com/api/v4/projects/1234/repository/files/@application/integration-tests/test/apptest/ apptest_refdata.json
Стоит отметить, что в зависимости от структуры каталогов вашего проекта некоторые символы в URL-адресе необходимо изменить.
Например, «@»заменяется на «%40», а «/» заменяется на «%2F ”
ОТДЫХА API
curl --head --header "PRIVATE-TOKEN: <your_access_token>" "https://main.gitlab.in.org.com/api/v4/projects/1234/repository/files/%40application%2Fintegration-tests%2Ftest%2Fapptest%2Fapptest_refdata.json/raw?ref=master"
Получить API
var url='https://main.gitlab.in.org.com/api/v4/projects/1234/repository/files/%40application%2Fintegration-tests%2Ftest%2Fapptest%2Fapptest_refdata.json/raw?ref=master';
const response = await fetch(url, {
method: 'GET',
headers: {
'PRIVATE-TOKEN': 'asdxxxxxxxxqUasdd',
'Content-Type': 'application/json',
},
});
const apptestJsonData = await response.json();
console.log(apptestJsonData);
Чтобы сделать ваш FETCH простым и полезным, используйте «await» ..

2. PUT /projects/:id/repository/files/:file_path
REST API
Gitlab показывает, используя простое содержимое, такое контент: blabla.
Однако здесь мы собираемся основывать наш сценарий для отправки объектов JSON.
Для всего файла необходимо использовать Gitlab Commit API. Gitlab также предлагает использовать параметры form и actions.
curl --request PUT --header 'PRIVATE-TOKEN: asdxxxxxxxxqUasdd' --header "Content-Type: application/json" --data '{"branch": "master", "content": "blabla", "commit_message": "Appropriate commit message"}' "https://main.gitlab.in.org.com/api/v4/projects/1234/repository/files/%40application%2Fintegration-tests%2Ftest%2Fapptest%2Fapptest_refdata.json"
Мы используем PUT для обновления существующего файла на удаленном компьютере. Но на этот раз нам нужно несколько дополнительных параметров: название ветки, сообщение фиксации и, конечно же, контент. Там мы создаем JSON, в котором мы упомянем все это и назовем его «полезная нагрузка».
const payload = {
branch: "master",
commit_message: 'Appropriate commit message',
content: JSON.stringify(jsonData), //content: "blabla"
};
jsonData будет данными, которые нам нужно обновить в нашем удаленном файле.
var jsonData={ "bread": "oregano", "cheese": "american", "meat": "salami", "sauce":"honeymustard", "saltandpepper": "yes" }
Fetch API
Все вместе
const payload = {
branch: "master",
commit_message: 'Appropriate commit message',
content: JSON.stringify(jsonData), //content: "blabla"
};
var jsonData={ "bread": "oregano", "cheese": "american", "meat": "salami", "sauce":"honeymustard", "saltandpepper": "yes" }
var url = 'https://main.gitlab.in.org.com/api/v4/projects/1234/repository/files/%40application%2Fintegration-tests%2Ftest%2Fapptest%2Fapptest_refdata.json'
fetch(url, {
method: 'PUT',
headers: {
'PRIVATE-TOKEN': 'asdxxxxxxxxqUasdd',
'Content-Type': 'application/json',
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => {
console.log('Success:', result);
})
.catch(error => {
console.error('Error:', error)
});
Довольно удобный fetch API для тех, кто никогда раньше не использовал fetch API, но мне показалось, что документации для Gitlab fetch API не хватает. Дайте мне знать, если это было полезно. ;)