You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用GitHub REST API获取特殊命名文件返回NotFound错误的解决咨询

解决GitHub REST API获取特殊文件名内容的问题

问题根源在于请求路径中的文件名未做URL编码,GitHub API对以.开头、以-结尾这类特殊模式的文件名,需要将文件名部分编码后再拼入请求路径,否则会出现路由解析偏差导致"NotFound"错误。

修复方案

  1. 单独对filename变量执行URL编码:
    使用JavaScript的encodeURIComponent()方法处理文件名,注意不要编码整个请求路径,仅编码文件名部分,避免路径中的/被转义破坏层级结构。

  2. 修改后的完整代码:

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:01:00