• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

JSON error przy łączeniu z API

Object Storage Arubacloud
0 głosów
284 wizyt
pytanie zadane 4 listopada 2018 w Python przez Dawid89 Obywatel (1,120 p.)

Czy ktoś mi powie dlaczego to nie działa? To moje początki z API więc może jest jakaś gafa ale porównując z przykładami powinno śmigać. 

1 odpowiedź

0 głosów
odpowiedź 4 listopada 2018 przez Tpk Nałogowiec (40,100 p.)
Co ci zwraca status code?

Jeżeli połączenie nie udało się i zwrócono kod błędu, nie będziesz w stanie zdekodować json'a.
komentarz 4 listopada 2018 przez Dawid89 Obywatel (1,120 p.)

404, gdy wpisze cały adres działa jak należy: 

response = requests.get('https://api.iextrading.com/1.0/stock/aapl/chart/5y' )

Problem jest chyba z /chart/  bo schemat jest taki:

GET /stock/{symbol}/chart/{range}

Mogę jakoś inaczej się odwołać do zmiennych pomijając /chart/ który jest stałą?

komentarz 4 listopada 2018 przez Tpk Nałogowiec (40,100 p.)
edycja 4 listopada 2018 przez Tpk

Przy pomocy tej pierwszej opcji (podawanie argumentów przy pomocy JSON) url wyglądało tak: 

https://api.iextrading.com/1.0/stock/?stock_name=apple&constance=chart&timeframe=1d

Dlatego to nie chodziło poprawnie, natomiast można to zrobić tak:

import requests

symbol = "aapl"
rang = "5y"
URL = "https://api.iextrading.com/1.0/stock/" + symbol + "/chart/" + rang
# ALBO: URL = "https://api.iextrading.com/1.0/stock/%s/chart/%s" % (symbol, rang)

response = requests.get(URL)

print(response.status_code)
print(response.json())

Może nie jest to najlepszy sposób ale działa, warto byłoby jeszcze dodać sprawdzanie (prostego if'a)

if response.status_code == requests.codes.ok:

Na wypadek problemów z dostępnością API.

komentarz 4 listopada 2018 przez Dawid89 Obywatel (1,120 p.)
Teraz działa ale mówisz, że nie jest to najlepszy sposób.

Więc pytanie czy to złe rozwiązanie? Czy jest jakiś lepsze?
komentarz 4 listopada 2018 przez Tpk Nałogowiec (40,100 p.)
edycja 4 listopada 2018 przez Tpk

Nie jest to najlepszy sposób (w sensie może ktoś wie jak to zrobić lepiej - szczególnie, że jest cała lista gotowych bibliotek do obsługi tego API dla różnych języków).

Odpowiadając na pytanie, można również za pomocą pierwszego sposobu:

import requests

URL = "https://api.iextrading.com/1.0/stock/aapl/batch"
PARAMETERS = { 'types': 'chart', 'range': '5y', 'last': 10 }

response = requests.get(URL, PARAMETERS)

print(response.status_code)
print(response.json())

W dokumentacji jest to opisane jako Batch Requests.

Podobne pytania

+1 głos
2 odpowiedzi 462 wizyt
pytanie zadane 12 listopada 2022 w Python przez Giacomo Nowicjusz (200 p.)
0 głosów
2 odpowiedzi 373 wizyt
pytanie zadane 26 października 2020 w Python przez lucyliu Początkujący (370 p.)
0 głosów
1 odpowiedź 481 wizyt
pytanie zadane 15 września 2021 w PHP przez Grzegorz Mikina Dyskutant (8,060 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...