从存储库获取原始文件

mmu*_*478 8 git api gitlab

我想通过使用它的api在gitlab中获取文件内容.首先,我检查我的gitlab版本,其编写为,GitLab Community Edition 9.4.3 b125d21更新asap

然后我创建一个私人令牌和 http:// gitadress/api/v4/projects/id/repository/files?private_token = PRIVATE_TOKEN 返回为;

{"error":"404 Not Found"}
Run Code Online (Sandbox Code Playgroud)

然后我修改查询为;

http:// gitadress/api/v4/projects/222/repository/tree?private_token = PRIVATE_TOKEN 此请求返回为;

[{"id":"8078365d80c","name":"test.js","type":"blob","path":"test.js","mode":"100644"}]
Run Code Online (Sandbox Code Playgroud)

我想要的是获取test.js的内容,但无论我尝试什么,我都无法实现它.

http://gitadress/api/v4/projects/id/repository/tree/test.js/raw?private_token = PRIVATE_TOKEN&ref = master 返回为;

{"error":"404 Not Found"}
Run Code Online (Sandbox Code Playgroud)

如何使用gitlab api获取原始文件内容?文档在这里; https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/repository_files.md#get-raw-file-from-repository

Von*_*onC 4

文档提到:

URL 编码的新文件的完整路径。前任。lib%2Fclass%2Erb

这意味着您需要进行 URL 编码test.jstest%2Ejs
(请参阅百分比编码:字符数据

http://gitadress/api/v4/projects/id/repository/files/test%2Ejs/raw?private_token=PRIVATE_TOKEN
Run Code Online (Sandbox Code Playgroud)

例如,您可以添加?ref=master以确保从分支获取内容。master

http://gitadress/api/v4/projects/id/repository/files/test%2Ejs/raw?ref=master&private_token=PRIVATE_TOKEN
Run Code Online (Sandbox Code Playgroud)

话虽如此,您的gitlab-ce 问题 31470仍然处于开放状态:

对于带有点的文件,“从存储库获取原始文件”的 API 失败

修复正在进行中:gitlab-ce merge_request 13370,并将针对 GitLab 9.5 进行交付。