【问题标题】:I need help converting this REST API Curl command to Python requests我需要帮助将此 REST API Curl 命令转换为 Python 请求
【发布时间】:2018-12-10 14:21:00
【问题描述】:

我是新来的,老实说,我对所有编码都比较陌生。

我正在尝试创建一个 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 请求,但我不知道如何实现搜索字段。

我已经到处寻找样本,但我无法让它发挥作用。我还没有找到有关如何使用令牌在请求中进行身份验证的任何信息。

无论如何,提前感谢您的任何回复:)

【问题讨论】:

    标签: python rest curl python-requests rt


    【解决方案1】:

    试试这个代码

    import requests
    
    headers = {
        'Content-Type': 'application/json',
        'Authorization': 'token TOKEN',
    }
    
    data = '[{ "field" : "value"}] ......'
    
    response = requests.post('YOUR_URL', headers=headers, data=data)
    

    【讨论】:

      【解决方案2】:

      尝试使用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)
      

      【讨论】:

        【解决方案3】:

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

        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

        【讨论】:

          猜你喜欢
          • 2020-07-19
          • 1970-01-01
          • 1970-01-01
          • 2018-10-21
          • 2019-08-07
          • 2017-05-25
          • 2021-07-08
          • 1970-01-01
          • 2015-09-13
          相关资源
          最近更新 更多