【问题标题】:REST API Returning Status 200 but JSON is giving me None with Python RequestsREST API 返回状态 200,但 JSON 没有给我任何 Python 请求
【发布时间】:2022-12-02 23:32:31
【问题描述】:

我一直在尝试将 Algolia 的 rest-api 与 python 请求一起使用,但即使我的状态为 200,我的 json 总是返回无,即:{'countries': None}。这是文档https://www.algolia.com/doc/rest-api/analytics/。他们也有一个 python api 但对于分析部分你需要使用 rest-api,这是 python api:https://github.com/algolia/algoliasearch-client-python/blob/master/algoliasearch/configs.py

我试着查看他们使用的标头,看看是否有帮助。

这是来自其文档的卷曲请求示例:


 curl -X GET \
     -H "X-Algolia-API-Key: ${API_KEY}" \
     -H "X-Algolia-Application-Id: ${APPLICATION_ID}" \
    "https://analytics.algolia.com/2/status?index=${index name}" 

这是我使用请求的代码:

import requests
from datetime import date
import json

class AutoAlgolia():
    def __init__(self, api_key, application_id, index_name):
        self.api_key = api_key
        self.application_id = application_id
        self.index_name = index_name
        
    def _headers(self):
        header = {
                'X-Algolia-API-Key': self.api_key,
                'X-Algolia-Application-Id': self.application_id ,
                "Content-Type": "application/json"
                }
        return header

    def getsearches(self):
        header = self._headers()
        today = date.today().isoformat()
        session = requests.Session()
        url = "https://analytics.algolia.com/2/searches/noResults?index=" + self.index_name + "&startDate=" + today + "&endDate=" +"2022-09-03" 
        req = session.get(url, headers=header)
        print(req.status_code)
        data = req.json()
        print(data)
    
if __name__ == "__main__":
    
    algolia = AutoAlgolia(api_key="key
", application_id="id", index_name="si_SOLUTIONS")

    a = algolia.getsearches()
    print(a) `

我还使用 req.headers 检查了可能有什么问题,但我不完全理解它:

{'Date': 'Thu, 01 Dec 2022 16:17:00 GMT', 'Content-Type': 'application/json', 'Content-Length': '17', 'Connection': 'keep-alive', 'Access-Control-Allow-Origin': '', 'Vary': 'Origin', 'X-Ratelimit-Limit': '100', 'X-Ratelimit-Remaining': '99', 'X-Ratelimit-Reset': '1669911480', 'Via': '1.1 google', 'CF-Cache-Status': 'DYNAMIC', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload', 'Server': 'cloudflare', 'CF-RAY': '772d216aaf1001db-ZRH'}

会不会是 access-control-allow-origin 是空的?

谢谢,非常感谢任何帮助

使用不同的标头,阅读他们的 python api 文档以查看是否与他们的 rest api 有任何相似之处,尝试了 urllib3(相同的结果),尝试了他们 api 中的其他 webhooks。

为避免混淆,以下是对 padawan 的回复:

抱歉,它确实使它看起来像 noresults 是原因,但 noresults 是 webhooks 之一,因为 algolia 被用作网站上的搜索引擎。因此,它会告诉您使用搜索引擎没有结果的术语进行搜索...我还尝试了多个日期范围,没有日期范围等,但都是一样的。此外,他们将数据保存 3 个月,因此它应该可以工作

【问题讨论】:

    标签: python json database rest python-requests


    【解决方案1】:

    curl 测试是否返回任何数据?

    它似乎与数据过滤有关,而不是请求格式本身:为什么请求 URL 有一个“noResults”参数?日期是否正确?今天开始日期和 2022-09-03 结束日期似乎不是一个合理的日期范围。

    【讨论】:

    • 抱歉,这确实使它看起来像 noresults 是原因,但 noresults 是 webhooks 之一,因为 algolia 被用作网站上的搜索引擎。因此,它会告诉您使用搜索引擎没有结果的术语进行搜索...我还尝试了多个日期范围,没有日期范围等,但都是一样的。此外,他们将数据保存 3 个月,因此它应该可以工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多