Python 使用GitHub API检查用户是否存在

Python 使用GitHub API检查用户是否存在,python,api,github,user-input,github-api,Python,Api,Github,User Input,Github Api,我将GithubAPI与python一起使用。我想验证用户是否存在 url=fhttps://api.github.com/users/{username} r=requests.geturl.formatusername.json 我想知道,当“用户名”不存在时,GithubAPI会返回什么。 我知道它返回一条错误消息notfound,但它作为python返回什么呢? 如何验证它?它返回一个JSON对象,并显示一条错误消息,如下所示: { "message": "Not Found",

我将GithubAPI与python一起使用。我想验证用户是否存在

url=fhttps://api.github.com/users/{username}

r=requests.geturl.formatusername.json

我想知道,当“用户名”不存在时,GithubAPI会返回什么。 我知道它返回一条错误消息notfound,但它作为python返回什么呢?
如何验证它?

它返回一个JSON对象,并显示一条错误消息,如下所示:

{
  "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

它返回一个JSON对象,并返回一条错误消息,如下所示:

{
  "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在python中,您得到的是一个映射

如果此值不存在,请查找r['login'],这意味着您提供的用户名是有效的。所以你可以扔一些像这样的试接球

导入请求 def checkUseruser: url=fhttps://api.github.com/users/{user} r=requests.geturl.formatuser.json 尝试: 返回r['login'] 除: 返回“无用户” printcheckUser'raja-ravi-prakash'
在python中,您得到的是一个映射

如果此值不存在,请查找r['login'],这意味着您提供的用户名是有效的。所以你可以扔一些像这样的试接球

导入请求 def checkUseruser: url=fhttps://api.github.com/users/{user} r=requests.geturl.formatuser.json 尝试: 返回r['login'] 除: 返回“无用户” printcheckUser'raja-ravi-prakash'
所以,我在回答我自己的问题

对我来说最有效的方法是通过计算并验证它返回的字典的长度,并且在任何情况下都最有效

长度=透镜

如果“length”等于2,则用户名不存在。 其他: 用户名存在

因为,当找不到用户名时,API返回的错误消息的形式为:

{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3/users/#get-a-single-user"
}
如@PrateekDewan在上述/以下答案中所述


因此,使用返回的字典/映射的长度来计算和验证它可能是一个简短而简单的解决方案。

因此,我要回答我自己的问题

对我来说最有效的方法是通过计算并验证它返回的字典的长度,并且在任何情况下都最有效

长度=透镜

如果“length”等于2,则用户名不存在。 其他: 用户名存在

因为,当找不到用户名时,API返回的错误消息的形式为:

{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3/users/#get-a-single-user"
}
如@PrateekDewan在上述/以下答案中所述


因此,使用返回的字典/映射的长度来计算和验证它可能是一个简短而简单的解决方案。

另一种解决方案,不依赖于响应主体,而只是检查响应状态代码

用户是REST语义中的资源

如果用户不存在,则我们期望响应状态代码404-未找到

记录在

演示:


另一种解决方案,不依赖于响应主体,而只是检查响应状态代码

用户是REST语义中的资源

如果用户不存在,则我们期望响应状态代码404-未找到

记录在

演示:


这是一个公平的解决办法。唯一的问题是,在try块中可能会出现许多问题。在这种情况下,无论引发什么异常,程序都将输出“无用户”。类似于断开的互联网连接也会返回“无用户”。不太理想!:也许我应该把url行和r行排除在外,这是一个公平的解决方案。唯一的问题是,在try块中可能会出现许多问题。在这种情况下,无论引发什么异常,程序都将输出“无用户”。类似于断开的互联网连接也会返回“无用户”。不太理想!:也许我应该把url行和r行排除在try catch之外