调用GitHub REST API获取特殊命名文件返回NotFound错误的解决咨询
解决GitHub REST API获取特殊文件名内容的问题
问题根源在于请求路径中的文件名未做URL编码,GitHub API对以.开头、以-结尾这类特殊模式的文件名,需要将文件名部分编码后再拼入请求路径,否则会出现路由解析偏差导致"NotFound"错误。
修复方案
单独对
filename变量执行URL编码:
使用JavaScript的encodeURIComponent()方法处理文件名,注意不要编码整个请求路径,仅编码文件名部分,避免路径中的/被转义破坏层级结构。修改后的完整代码:
const { get } = require("https"); let username = "ganeshkbhat"; let repository = "requireurl"; // 对文件名进行URL编码 let filename = encodeURIComponent("test/units/.gitignore"); get({ hostname: "api.github.com", path: `/repos/${username}/${repository}/contents/${filename}`, headers: { "User-Agent": `${username}`, "Accept": "application/vnd.github+json", 'Authorization': 'Basic ' + `${username}:<token>` } }, (res) => { let data = ''; res.on('data', (chunk) => data += chunk); res.on('end', () => resolve(data)); }).on('error', (err) => reject(err));
补充说明
- 除了
.开头、-结尾的文件,对于包含空格、#、&等特殊字符的文件名,同样需要用encodeURIComponent()处理,才能被GitHub API正确识别。 - 编码后的文件名会转换为符合HTTP标准的格式,确保请求路径被准确解析。
内容的提问来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

