我想从另一个API调用一个API。因此,外部API具有基于jwt令牌的身份验证
import requests
response = requests.get('http://host:port/api/users', auth= ("username","password"))
我得到一个错误:
{"error":"authentication failed: jwt parse error: token contains an invalid number of segments","code":16,"message":"authentication failed: jwt parse error: token contains an invalid number of segments","details":[]}
或者,首先我需要调用登录API,获取令牌,并在调用另一个API时在头中应用该令牌。如果是这样,那么为什么在requests.get(URL, auth=(username,password))
中有“auth”参数
以下是(从高层角度)请求背后的机制:
当构造请求时
request(method, url, **kwargs)
只有方法和url参数是必需的,其余参数是可选的::param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.
然后从方法的角度来看:
对于
get
和post
,强制参数是url,其他参数是默认或可选的许多web服务可能需要身份验证,如HTTP基本身份验证。这是最简单的一种,请求直接支持它
这和我的想法是一样的
因此,从身份验证的角度(HTTPBasicAuth、HTTPDigest身份验证、OAuth1)来看,如何实现API基本上是非常重要的。基于此,您可以使用适当的模块(在
requests
)进行身份验证希望这有帮助
相关问题 更多 >
编程相关推荐