我正在使用Python和GitHub API。我想要验证用户是否存在。
url = f"https://api.github.com/users/{username}"
r = requests.get(url.format(username)).json()
我想知道当“用户名”不存在时,GitHub API会返回什么。我知道它会返回一个未找到的错误消息,但它作为Python会返回什么?我该如何进行验证?
我正在使用Python和GitHub API。我想要验证用户是否存在。
url = f"https://api.github.com/users/{username}"
r = requests.get(url.format(username)).json()
我想知道当“用户名”不存在时,GitHub API会返回什么。我知道它会返回一个未找到的错误消息,但它作为Python会返回什么?我该如何进行验证?
404
- 未找到。>>> import requests
>>> r = requests.get('https://api.github.com/users/vineetvdubey')
>>> r.status_code
200
>>> r = requests.get('https://api.github.com/users/non-existing-user__')
>>> r.status_code
404
{
"message": "Not Found",
"documentation_url": "https://developer.github.com/v3/users/#get-a-single-user"
}
您可以在响应r
中查找“消息”关键字,并检查其值是否为“未找到”,以确定用户是否不存在。
简而言之:
url = f"https://api.github.com/users/{username}"
r = requests.get(url.format(username)).json()
if "message" in r:
if r["message"] == "Not Found": # Just to be double sure
print ("User does not exist.")
编辑:如果你好奇,我刚刚尝试了一堆随机的用户名,很快就找到了一个不存在的。这就是我找到这个响应的方式。尝试使用https://api.github.com/users/llllaaa
import requests
def checkUser(user):
url = f"https://api.github.com/users/{user}"
r = requests.get(url.format(user)).json()
try:
return r['login']
except:
return 'No User'
print(checkUser('raja-ravi-prakash'))
所以,我回答了自己的问题。
对我来说最有效的方法,也是在任何情况下都最有效的方法,是通过计算并验证它返回的字典的长度。
length = len(r)
如果“长度”等于2,则用户名不存在。 否则: 用户名存在。
因为当未找到用户名时,API返回的错误消息的格式为:
{
"message": "Not Found",
"documentation_url": "https://developer.github.com/v3/users/#get-a-single-user"
}
正如上面/下面的回答中@PrateekDewan提到的那样。
因此,使用返回的字典/映射的长度进行计算和验证可以是一个简短而简单的解决方案。
try
块中可能会出现许多错误。在这种情况下,程序将输出“'No User'”,无论引发了什么异常。例如,断开的互联网连接也会返回“'No User'”。这并不是理想的! :) - Prateek Dewan