Pobieranie danych z rest api

Pobieranie danych z rest api
PF
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:27
0

Mam pytanie czy istnieje taka możliwość pobrania danych z rest api i zwracania ich w formacie JSON?
Wiem, że muszę użyć metody GET. Jeśli ktoś może mnie naprowadzić to będę wdzięczny.

Wiem tylko tyle, samo pobieranie danych z rest api jest problemem

Kopiuj
@app.route('/dane', methods=['GET'])
def index():
    return jsonify
edytowany 3x, ostatnio: Shalom
Eldorad O.
  • Rejestracja:około 6 lat
  • Ostatnio:3 dni
  • Postów:517
0

A w jakim formacie są zwracane dane z tego API?

PF
Nie wiem czy dobrze rozumiem, ale w formacie .html
Eldorad O.
Dane z API najczęściej zwracane są w JSON'ie więc nie potrzebujesz tego parsować. Dlatego pytam.
PF
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:27
0

@Eldorad O.:
Może nakreślę sytuację,
Mam plik main.py ze skryptem który łączy się z bazą danych oraz za pomocą pliku html wyświetlam dane z tej bazy w tabelce.
A potrzebuję pobrać dane z API w JSON'ie aby móc je później zaczytać w aplikacji javascryptowej

RequiredNickname
skoro strzelać getem na jakiś adres i w odpowiedzi dostajesz html to nie jest to żadne api restowe.
ledi12
  • Rejestracja:prawie 6 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Wrocław
0

Bez kodu i przykładu outputu z api będzie ciężko cokolwiek doradzić. Api restowe z reguły zwraca jsony, ale tutaj mam przeczucie, że tym getem dostajesz jakieś body strony i chcesz zrobić z tego jsona.


Robię http response status cody w martwych ciągach
Arthan
  • Rejestracja:około 18 lat
  • Ostatnio:ponad rok
0

Nadal moim zdaniem problem jest zbyt słabo nakreślony.
Ale jeśli dobrze rozumiem to nie jest żadne zewnętrzne api? Masz bazę, Flaskiem sobie z niej dane wyrzucasz do html'a a chciałbyś wyrzucać do jsona i dane dynamicznie wyświetlać/odświeżać na swojej stronie?
To w zasadzie masz wszystko opisane w dokumentacji:
https://flask.palletsprojects.com/en/2.0.x/api/#flask.json.jsonify

Masz konkretnie z czymś problem? Coś Ci nie działa?

PF
  • Rejestracja:ponad 3 lata
  • Ostatnio:około 3 lata
  • Postów:27
0

Mój kod:

Kopiuj
@app.route('/dane', methods=['GET'])
def history():
     try:
        id = data.query.with_entities(data.dane_x, data.dane_y, data.dane_z).all()
        id_text = ""
        for i in id:
            id_text += str(i.dane_x) + ', '+ str(i.dane_y) + ', '  +  str(i.dane_z) + ", "
            press('enter')

        
        return jsonify(id_text)

     except:
         pass

Wynik działania tego kody to:

Kopiuj
"2, 1, 3, 1, 4, 1, itd"

Nie wiem jak pobierać z tego api więc po prostu pobrałem dane z bazy i spróbuję je zapisać w formacie JSON. Czy to dobry pomysł?

Eldorad O.
  • Rejestracja:około 6 lat
  • Ostatnio:3 dni
  • Postów:517
0

@Python_fanboy: Wklej cały kod, bo na razie to nie bardzo wiem po co to wszystko.

PF
Potrzebuję pliku JSON do generowania wykresów w JavaScript
masterc
  • Rejestracja:około 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:425
0

@Python_fanboy: Tak, jest możliwe pobieranie danych z REST i zwracanie ich JSON i nie musisz uzyc metody GET mozesz uzyc metody DELETE i tez poebirzesz dane, wszystko zalezy od implementacji REST API,
Bonus: nawte nie wiesz co to znaczy REST xD


Wymyśliłem, że nie chce mi się.
edytowany 2x, ostatnio: masterc
PF
Dokładnie, nie wiem dlatego ten post tutaj. Bystrzak z Ciebie ;)
Eldorad O.
  • Rejestracja:około 6 lat
  • Ostatnio:3 dni
  • Postów:517
0

@Python_fanboy: No dobra, co ci zwraca ta funkcja "history", co konkretnie ci teraz nie działa?

PF
Zwraca ciąg licz oddzielonych przecinkiem, a chciałbym format JSON. "return jsonify" nie edytuje mi tego więc pewnie w tym jest problem
Eldorad O.
  • Rejestracja:około 6 lat
  • Ostatnio:3 dni
  • Postów:517
0

@Python_fanboy: Zwraca ci string bo nigdzie nie zdefiniowałeś klucza pod jaką ma być ta wartość zapisana.

https://flask.palletsprojects.com/en/2.0.x/api/#flask.json.jsonify

Jeżeli chcesz, aby funkcja zwracała JSON'a to musisz podać nazwę klucza jako argument:

Kopiuj
return jsonify(nazwa_klucza=id_text)
edytowany 2x, ostatnio: Eldorad O.
PF
Tylko moje dane dodawane są do zmiennej poprzez pętlę i jak robię "return jsonify(nazwa_klucza=id_text)" to mam tylko "nazwa_klucza: 1,5,7,8" itd. Jest tylko jeden klucz, jak mogę do każdej wartości dorobić inny klucz? W sumie 3 typy kluczy są tylko potrzebne x, y,z
masterc
Mas dokładnie to co napisałeś, napierw dodajesz zmeinne do stringa a potem wysylasz jsonem string.. jeli ma byc inaczej dodaj je w petli do tablicy i wyslij tablice jsonem
Eldorad O.
  • Rejestracja:około 6 lat
  • Ostatnio:3 dni
  • Postów:517
1

@Python_fanboy: A co te twoje dane prezentują? Każda cyfra to współrzędna na osi? One są grupowane po trzy?

Na przykładzie 2, 1, 3, 1, 4, 1:

x1 = 2, y1 = 1, z1 = 3
x2 = 1, y2 = 4, z2 = 1

PF
Dokładnie tak, to są współrzędne
Eldorad O.
I są grupowane w taki sposób jak podałem?
PF
id_text += str(i.dane_x) + ', '+ str(i.dane_y) + ', ' + str(i.dane_z) + ", " każde wywołanie pętli dodaje tworzy grupę 3 elementową
PF
Dodawane są po 3, ale nie mają grup, są zapisane jedna po drugiej jak w przykładzie
Tasmanian Devil
"Twój post prawdopodobnie zawiera niesformatowany kod - nie wklejaj bezpośrednio kodu, ale obejmuj go w odpowiednie znaczniki! (jestem botem, ten komentarz został dodany automatycznie)"
Eldorad O.
  • Rejestracja:około 6 lat
  • Ostatnio:3 dni
  • Postów:517
1

@Python_fanboy: No to przecież możesz stworzyć 3 osobne listy dla X, Y i Z i przekazać te listy do funkcji:

Kopiuj

@app.route('/dane', methods=['GET'])
def history():
     try:
        id = data.query.with_entities(data.dane_x, data.dane_y, data.dane_z).all()
        id_text = ""
       
        x = []
        y = []
        z = []

        for i in id:
            x.append(i.dane_x)
            y.append(i.dane_y)
            z.append(i.dane_z)

            press('enter')

        return jsonify(x=x, y=y, z=z)

     except:
         pass

PF
To już prawie jest to, ale wydaje mi się, że skrypt generujący wykres musi mieć to podane w formacie x1, y1, z1 x2, y2, z2 A tutaj mamy : x1, x2, x3 itd.
PF
Da radę wprowadzić tutaj modyfikację żeby nie rozdzielało cyfr dwu i trzy cyfrowych?
Eldorad O.
Tutaj nie ma kodu który cokolwiek rozdziela, jeżeli tak się dzieje to prawdopodobnie wina leży w sposobie zapisu tych danych w bazie.
Eldorad O.
  • Rejestracja:około 6 lat
  • Ostatnio:3 dni
  • Postów:517
1

@Python_fanboy:

Iterujesz w JS po 3 tablicach jednocześnie:

Kopiuj
for (var i = 0; i < x.length; i++) 
{
  x_coord = x[i];
  y_coord = y[i];
  z_coord = z[i];

// jakiś kod który wrzuca punkt na wykres
}

i masz wszystko po kolei.

edytowany 5x, ostatnio: Eldorad O.
PF
Dzięki wielkie za pomoc

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.