Pobieranie danych z rest api

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

@app.route('/dane', methods=['GET'])
def index():
    return jsonify
0

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

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

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.

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?

0

Mój kod:

@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:

"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ł?

0

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

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

0

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

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:

return jsonify(nazwa_klucza=id_text)
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

1

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


@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

1

@Python_fanboy:

Iterujesz w JS po 3 tablicach jednocześnie:

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1