python - “property”对象不可迭代,尝试在调用正在使用的 API 后获取响应

标签 python api dictionary request fastapi

当我在调用我想要使用的 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/

相关文章:

java - 如何找到 Map 中值的类型?

python - 如何使用 Django 中的默认连接从 Select 查询中获取键(列名)-值对

python - 如何在 Python 3.11+ 中创建枚举而不将参数传递给 __init__?

python - 尝试删除打印机时访问被拒绝

c++ - GMock-模拟抽象类与另一个实现

ruby-on-rails - 带有 Rspec 测试的完整 rails json API 示例

python - 在一个表达式中打印斐波那契数列的前 n 个数

javascript - OAuth2 和 API Json 请求不适用于 jQuery 调用

c++ - 映射导致段错误。如何增加内存力?

Java 8 Map.Entry 比较器