在python GET(方法)请求中发送Json(包含布尔值/数字)数据

OmP*_*ash 4 python json python-requests

问:是否可以通过 GET 请求发送 json 数据?

我想传递一些过滤器参数来从数据库读取结果

params = {'is_coming_soon': False, 'is_paid': True, 'limit': 100, 'skip': 0}
headers = {'content-type': 'application/json'}
response = requests.get(url=url, headers=headers, params=params)
Run Code Online (Sandbox Code Playgroud)

在服务器端,我以字符串的形式接收所有值,

我怎样才能请求获得正确的布尔值而不是字符串一。

bre*_*nan 5

要发送 json 有效负载,请使用dataorjson参数而不是params. 首先使用 将 dict 转换为 json json.dumps,如果您愿意,请仔细检查转换:

import json

payload = json.dumps(params)
print(payload)  # '{"is_coming_soon": false, "is_paid": true, "limit": 100, "skip": 0}'

response = requests.get(url=url, headers=headers, data=payload)
Run Code Online (Sandbox Code Playgroud)

此外,您可以调试这样的requests调用:

import requests
import logging

from http.client import HTTPConnection
# from httplib import HTTPConnection  # Python 2

HTTPConnection.debuglevel = 1

logging.basicConfig() 
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

response = requests.get(url=url, headers=headers, data=payload)
Run Code Online (Sandbox Code Playgroud)