#python #json #api
#python #json #API
Вопрос:
У меня нет большого опыта работы с API. В настоящее время я работаю над программой на Python, используя следующий api: https://uk.api.just-eat.io/docs#section/Just-Eat-API .
Я сосредоточен на получении данных json по почтовому индексу: https://uk.api.just-eat.io/docs#operation/SearchByPostcode
import requests
import json
response = requests.get("https://uk.api.just-eat.io/restaurants/bypostcode/NW32YT")
print(response.json())
print(response.status_code)
Когда я выполняю вышеуказанное, я получаю следующее сообщение:
403
Traceback (most recent call last):
File "/Users/mari/python/./api.py", line 7, in <module>
print(response.json())
File "/usr/local/lib/python3.9/site-packages/requests/models.py", line 898, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/local/Cellar/python@3.9/3.9.0_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
У меня были проблемы с получением данных json, но вчера вечером код состояния был 200, и я смог увидеть данные json с моего терминала. Я что-то упустил в своем коде? или api нестабилен?
-Заранее большое спасибо.
Комментарии:
1. Вы не отправляете никакой аутентификации и получаете 403 (запрещено).
Ответ №1:
Вам нужно добавить Authorization
заголовок, как показано в документации API. Если у вас нет ключа API, вам нужно будет запросить его у них.
PUT https://uk-partnerapi.just-eat.io/orders/abcd1234 HTTP/1.1
Authorization: JE-API-KEY abcd123456789
Чтобы сделать это с помощью библиотеки запросов, вы можете изменить свой запрос на
requests.get("https://uk.api.just-eat.io/restaurants/bypostcode/NW32YT", headers={'Authorization': 'JE-API-KEY <MY_TOKEN>'})