【发布时间】: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