Github API v3 删除中文名 gist file 失败

Github API v3 删除中文名 gist file 失败

内容如题,是一段找 bug 的记录。

## 背景

最近在用 github api v3 的 gist 部分,来做个小应用。发现其中删除 gist file 的功能偶发性失败,很上头,,,

经过多次实验,发现剩下的不可删除的文件有一个共同点,名称中都包含中文

## 谁的问题

肯定是我的问题,v3 都这么久了,有问题早修了,,,

先看文档,分别验证了 updateadd,中文也都 ok。
因为删除部分并没有提到中文,demo 也没包含,于是猜测是一个隐藏特性,文档不健全。

也看了一些知名库的源码比如 google/go-github,但其中并没提及这部分。
在尝试了 urlencode 之后,我去 google 和 github 搜了挺久,,,无果,竟然之前没人遇到过吗?!!

回来后把验证脚本换成 shell curl,再次复现。
确认无误后,给 github 提了个工单进行说明。没办法了搞不定,,,这是最后的波纹了

## github 的回复

好吧确实是 github 的问题,在我提交 7 小时后进行了回复。现在就静等修复了,,,

## 测试代码

英文名的文件,可以正常删除:

bash
1curl -L \
2  -X PATCH \
3  -H "Accept: application/vnd.github+json" \
4  -H "Authorization: Bearer <YOUR-TOKEN>"\
5  -H "X-GitHub-Api-Version: 2022-11-28" \
6  https://api.github.com/gists/GIST_ID \
7  -d '{"files":{"hello.py":null}}'

如果文件名中包含中文,则会出错:

bash
1curl -L \
2  -X PATCH \
3  -H "Accept: application/vnd.github+json" \
4  -H "Authorization: Bearer <YOUR-TOKEN>"\
5  -H "X-GitHub-Api-Version: 2022-11-28" \
6  https://api.github.com/gists/GIST_ID \
7  -d '{"files":{"中文.md":null}}'

响应内容:

json
1{
2    "message": "Validation Failed",
3    "errors": [
4        {
5            "resource": "Gist",
6            "code": "missing_field",
7            "field": "files"
8        }
9    ],
10    "documentation_url": "https://docs.github.com/rest/reference/gists/#update-a-gist"
11}

## 修复

在工单第一次回复我 11天 后,问题得到了修复,现在能正常的删除中文名文件。

## 参考

https://docs.github.com/zh/rest/gists/gists?apiVersion=2022-11-28#update-a-gist

to-be-continued
avatar

闲暇时候的文章

会写一些 代码、心情、生活、食物、balabala 我也不知道什么类型的东西 >_<#@!

如果碰巧你找到感兴趣的东西,可以来瞅瞅。

Copyright © 2017 - 2023 xieshuang. All Rights Reserved. Power by k8s + nestjs + next + vue + typescript.
鄂ICP备20008501号-1