在python中测试API并不困难。我们只需要一个可以调用Web服务测试REST API的库。我使用requests library 来调用REST API。该库的网站提到了以下情况:
Requests是一个针对程序员设计的优雅而简单的Python HTTP库。
------documentation of requests
看起来不错,不是吗?在该网站上,他们给出了一个示例,可以从github API获取用户。API调用需要使用用户名和密码进行一些身份验证。
import request
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
这在我们这种的情况下行不通。我们有一个身份验证服务,它首先给我们一个承载令牌。当调用其他服务时,该令牌随后在请求头中发送。这意味着在调用另一个服务之前,我们需要使用用户和密码获取令牌。
import requests
url = "https://the.authentication.service.url/"
payload = dict(login="myname", password="mypassword", type="plain")
login = requests.post(url, data=payload)
token = login.json()['token']
我们需要用于其他服务的令牌位于带有密钥令牌的json响应。注意,这是我们的实现。你的可以不同。
现在是时候调用其他服务了。我花了一段时间才弄明白它是如何工作的,但它非常简单。让我们给出一个代码示例:
service_url = "https://the.user.service.url"
headers = dict(authorization="bearer %s" % token)
reply = requests.get(service_url, headers=headers)
if reply.status_code == 200:
print("The reply is: %s" % reply.json())
我们所有的服务都将json作为回复发送回来。之后,很容易将其解析为python dict。
我们用这段简单的代码测试每个web服务。事情就这么简单。