Python API POST请求:硬编码有效,但变量无效-错误500

时间:2020-10-06 21:05:40

标签: python api rest

我遇到了一个问题,无法弄清楚为什么以及如何解决。我在Flask中构建了一个基本的API,可以从Google趋势中获取数据。我现在正在编写一个Python脚本来使用该API。该API需要5个查询string参数(keyword1, keyword2, start, end, country)。当我使用POSTMAN调用该API时,它会给我200响应和正确的数据(生成csv文件并存储它)。现在,我需要实现代码以对该服务发出POST请求。我遇到2个查询参数:keyword1keyword2的问题,当我在有效负载中编码这些参数时,它运行良好(200个响应并存储文件)。当我使用变量而不是对keyword1keyword2进行编码时,出现500错误。我所做的是:

  1. 验证了keyword1keyword2的类型,并且它是我的查询参数中预期的string
  2. 检查两个变量都不为null也不为空

不确定这里是什么问题,我花了最后4个小时来尝试了解问题所在

500错误代码

start = '2020-01-01'
end = '2020-01-15'
country = 'GB'

#Few others methods between

def request_trends_service():
    current_position = get_position_reader()
    new_position, keyword1 = read_line_from_csv(current_position)
    new_position, keyword2 = read_line_from_csv(new_position)
    save_new_position(new_position)

    url = "https://gtrendsv4-f2ya73vqjq-uc.a.run.app/request_trends?"

    payload = {
    "keyword1": keyword1,
    "keyword2": keyword2,
    "start": start,
    "end": end,
    "country": country
    }

    parameters = urllib.parse.urlencode(payload)
    url += parameters
    r = requests.post(url)

    print(r.text.encode('utf8'))

有效的代码(更改了2行)

start = '2020-01-01'
end = '2020-01-15'
country = 'GB'

#Few others methods between

def request_trends_service():
    current_position = get_position_reader()
    new_position, keyword1 = read_line_from_csv(current_position)
    new_position, keyword2 = read_line_from_csv(new_position)
    save_new_position(new_position)

    url = "https://gtrendsv4-f2ya73vqjq-uc.a.run.app/request_trends?"

    payload = {
    "keyword1": "sun",
    "keyword2": "fun",
    "start": start,
    "end": end,
    "country": country
    }

    parameters = urllib.parse.urlencode(payload)
    url += parameters
    r = requests.post(url)

    print(r.text.encode('utf8'))

0 个答案:

没有答案