使用Python测试HTTP API

时间:2016-03-24 08:47:36

标签: python json httprequest

我是Python编程的新手,我不知道以下所需的所有库。

我想用Python来测试一些HTTP API。主要是我想使用OAuth并进行一些JSON调用。有问题的API可以在以下网址找到:https://developers.trustpilot.com/authentication和生成产品评论链接(我只能使用一个链接)

我想验证自己,然后一步生成产品评论链接。到目前为止,我一直在使用Advanced REST客户端(ARC)单独进行这些调用。如果你觉得它更容易,我也可以使用.arc文件。

这个想法将一次性连续进行这些调用。所以这将是一条直线:

1)进行身份验证呼叫。

HTTP方法如下所示: https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken 方法发布:

标题 授权:基本Base64encode(API密钥:秘密) 内容类型:application / x-www-form-urlencoded

有效载荷: grant_type =密码&安培; username=user@mail.com&密码= SomePass

基本上将这一位翻译成Python。

1.a)为通话添加标题

标题授权:base64encode hash内容类型:application / x-www-form-urlencoded

1.b)向呼叫添加有效载荷

Payload:grant_type = password& username

4)从步骤1)中的呼叫接收令牌(结果是格式)

“访问令牌”:Auth_token

5)获取令牌并将其用于创建产品评论。

5.a)在标题

中添加标记

标题:授权:Bearer Auth_token

6.a)将JSON有效负载添加到步骤5中的调用中。

这是我到目前为止的代码:

Import requests

header = {'Authorization: Basic NnNrQUprTWRHTU5VSXJGYXBVRGxack1oT01oTUFRZHI6QTFvOGJjRUNDdUxBTmVqUQ==}','Content-Type: application/x-www-form-urlencoded'}
payload = {'grant_type=password&username=email@address.com&password=SomePassword'}
r = requests.post('https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken', headers=header, params=payload )

理想情况下,我想创建requests.post(url,header,payload),然后返回服务器以JSON格式回答的内容。我认为print r.text会做最后一部分。

所以这是我写的代码(现在有效):

import requests
import getpass
import json
from requests.auth import HTTPBasicAuth

header = {'grant_type':'password' , 'username':'mail@maildomain.com', 'password':'YourPassword'}
username= "YOURAPIKEY" #APIKey
password= "YOURSECRET" #Secret
res = requests.post(
    'URL/v1/oauth/oauth-business-users-for-applications/accesstoken',
    auth=HTTPBasicAuth(username, password),  # basic authentication
    data=header)

#print(res.content) #See content of the call result.

data = res.json()  # get response as parsed json (will return a dict)
auth_token = data.get('access_token')

1 个答案:

答案 0 :(得分:2)

requests无需您的任何工作即可完成您的所有要求。

请参阅authenticationparametersjson outputjson input

的文档
  

进行身份验证呼叫。

import requests
import getpass

from requests.auth import HTTPBasicAuth

username = raw_input('Username: ')
password = getpass.getpass('Password: ')

res = requests.post(
    'https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken',
    auth=HTTPBasicAuth(username, password),  # basic authentication
    params={  # url parameters
        'grant_type': 'password',
        'username': 'email@address.com',
        'password': 'SomePassword'
    })
  

从步骤1中的呼叫中接收令牌(结果为格式)

# res = requests.post.....
data = res.json()  # get response as parsed json (will return a dict)
auth_token = data.get('access token')
  

获取令牌并将其用于创建产品评论。

request.post(
    '.../product_review',
    headers={
        'Authorization': 'Bearer ' + auth_token
    },
    json={'my': 'payload'})  # send data as json