当我在调用我想要使用的 API 后尝试获取响应时,出现此错误。
ValueError: [TypeError("'property' object is not iterable"),
TypeError('vars() argument must have __dict__ attribute')]
我正在尝试使用 fastapi 从客户端获取纬度和经度,以便我可以显示该区域的公共(public)交通。我可以使用名为 GeoApify 的 API 来完成此操作。但是,我遇到了问题,我找不到我的错误。
我使用字典发出请求,以便为我的过滤器放置所有参数,然后将响应转换为 JSON。但我有这个错误。
from pickletools import string1
from fastapi import FastAPI
import requests
from requests.structures import CaseInsensitiveDict
app = FastAPI()
@app.get("/thanos/{lon}/{lat}")
async def read_item(lat : float,lon : float):
url = "https://api.geoapify.com/v2/places"
headers = CaseInsensitiveDict()
dict = {
"categories" : 'public_transport',
"filter" : 'circle:' + str(lon) + ',' + str(lat) + ",500",
"limit" : '20',
"apiKey" : '086a77f34e3a4ed583da9606318ca0ac'
}
params = dict
headers = CaseInsensitiveDict(params)
headers["Accept"] = "application/json"
resp = requests.get(url, headers = headers)
# resp = requests.get(url = url, params = params)
data = resp.json
return resp
最佳答案
使用如下:
from fastapi import FastAPI
import requests
from requests.structures import CaseInsensitiveDict
import urllib
app = FastAPI()
url = "https://api.geoapify.com/v2/places"
@app.get("/{lon}/{lat}")
def read_item(lat : float, lon : float):
params = {
"categories" : 'public_transport',
"filter" : 'circle:' + str(lon) + ',' + str(lat) + ",500",
"limit" : '20',
"apiKey" : '086a77f34e3a4ed583da9606318ca0ac'
}
headers = CaseInsensitiveDict()
headers["Accept"] = "application/json"
params = urllib.parse.urlencode(params)
resp = requests.get(url=url, params=params, headers=headers)
return resp.json()
关于python - “property”对象不可迭代,尝试在调用正在使用的 API 后获取响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71063608/