curl POST gitlab API 给出 404

Curl POST gitlab API gives 404

我正在尝试使用 curl 将文件推送到我存储库中名为 "collections" 的文件夹。 我花了将近 2 天的时间调查问题,但我不确定确切的问题是什么。

curl -D- -k -X GET -H "PRIVATE-TOKEN: faNFKoC4-opiDJ0FJSk" https://gitlab.example.com/api/v4/projects/592/repository/tree?path=collections

获取请求正常工作,我得到了集合文件夹中的文件列表。 collections文件夹是我的gitlab仓库中的一个文件夹 但是当我尝试 POST 一个文件到完全相同的文件夹时,我得到 404:

curl -D- -k -X POST -H "PRIVATE-TOKEN: faNFKoC4-opiDJ0FJSk" -F "file=@C:/Documents/Folder_A/bp30_QA.csv" https://gitlab.example.com/api/v4/projects/592/repository/tree?path=collections

我是不是漏掉了一些参数? gitlab API 也对我帮助不大。

编辑:Bertrand Martel 的解决方案帮助我解决了问题

同样适用于 windows 在安装 jq

时遇到问题的所有人

jq is a lightweight and flexible command-line JSON processor.

安装巧克力:https://chocolatey.org/install

以管理员身份打开 powershell 并 运行:

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

安装后,运行:

choco install jq

create a new filecollections文件夹中调用bp30_QA.csv,可以使用如下:

curl -H 'PRIVATE-TOKEN: YOUR_PRIVATE_TOKEN' \
     -H "Content-Type: application/json" \
     -d '{
        "branch": "master", 
        "author_email": "johndoe@gmail.com", 
        "author_name": "John Doe",
        "content": '"$(jq -Rs '.' bp30_QA.csv)"', 
        "commit_message": "create a new file"
    }' "https://gitlab.com/api/v4/projects/592/repository/files/collections%2Fbp30_QA.csv"

它使用 to wrap the content of the file in a single JSON field (check )