我需要帮助将此REST API Curl命令转换为Python请求

时间:2018-12-10 14:21:00

标签: python rest curl python-requests rt

我在这里是新手,对所有诚实的代码来说都是新手。

我正在尝试创建一个Pyton脚本,以使用REST API从Request Tracker资产数据库中搜索项目。

到目前为止,我已经获得了以下Curl命令:

curl    -X POST \
-H "Content-Type: application/json" \
-d '[{ "field" : "Owner", "operator" : "LIKE", "value" : "NAME" },{"field":"Catalog", "value":"1"}]' \
-H 'Authorization: token MY_TOKEN' \
'https://RT_URL/rt/REST/2.0/assets'

它返回一个不错的JSON,其结果来自RT_URL,其中所有者使用令牌MY_TOKEN匹配NAME。

但是我不知道如何用Python编写代码。我有一个脚本,它使用请求库来获取的脚本使用的是简单的URL请求,但我不知道如何实现搜索字段。

我已经四处寻找样本,但是无法正常工作。我尚未找到有关如何使用令牌在请求中进行身份验证的任何信息。

无论如何,在此先感谢您的答复:)

3 个答案:

答案 0 :(得分:0)

尝试使用requests.post()对您的REST API执行HTTP POST请求:

import requests
import json

# URL
url = 'https://RT_URL/rt/REST/2.0/assets'

# JSON data 
data = '[{ "field" : "Owner", "operator" : "LIKE", "value" : "NAME" },{"field":"Catalog", "value":"1"}]'

# Request headers
headers = {"Content-Type": "application/json", "Authorization": "token MY_TOKEN"}

# POST request
requests.post(url=url, data=data, headers=headers)

答案 1 :(得分:0)

尝试此代码

import requests

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'token TOKEN',
}

data = '[{ "field" : "value"}] ......'

response = requests.post('YOUR_URL', headers=headers, data=data)

答案 2 :(得分:0)

首先让我们为您的请求构建标题字典:

headers = {
    'Content-Type': 'application/json', (...)
}

然后,让我们创建您的身体:

json = [{
        "field": "Owner",
        "operator": "LIKE",
        "value": "NAME"
    }, {
        "field": "Catalog",
        "value": "1"
    }]

最后,让我们发布您的请求:

response = requests.post('https://RT_URL/rt/REST/2.0/assets', json=json, headers=headers)

这应该可以解决问题。

您可以找到更多信息here