0

Einfacher API Request - Keyline MIS

Hallo Zusammen,

ich möchte einen bestimmten Endpoint in der Keyline API ansprechen. (DOCU https://www.keyline-mis.de/docs/api)

Die API setzt die Bearer-Authentifizierung ein.

Folgender Code:

let response := http("GET", "https://app.keyline-mis.com/api/v2/sales/orders", {
Authorization: "Bearer " + keyline_APIkey(),
'Content-Type': "application/json"
});
if response.error then
alert(text(response.error))
else
alert(text(response.result))
end

Das ganze wird beim klicken eins Buttons ausgeführt.

Leider bekomme ich nur die Meldung "Request failed: error - ".

Folgende Fragen habe ich dazu:

1.Wo liegt mein Fehler?

2.Wie kann ich den Error Code den die API übergibt auslesen?

3.Wie kann ich die Rückmeldung response.result in ein Textfeld neben dem Button ausgeben?

4.Wie kann ich das Ergebnis response.result in eine Tabelle schreiben und bestimmen welcher Teil des JSON wo landet?

 

Im Voraus vielen Dank!

lg

Ben

7 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Ben,

    es fehlt noch Body in der Abfrage. Wenn keine Optionen verfügbar sind, einfach leere geschweifte Klammern. Und ich würde das ganze noch als Server lauffen lassen:

    ---

    let response := do as server

    http("GET", "https://app.keyline-mis.com/api/v2/sales/orders", {
    Authorization: "Bearer " + keyline_APIkey(),
    'Content-Type': "application/json"
    },{

    })

    end;
    if response.error then
    alert(text(response.error))
    else
    alert(text(response.result))
    end

    ---

    • Benjamin_Kromer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Vielen Dank Leonid!

    Das hat geklappt. Frage 3 hat sich auch erledigt, das habe ich hinbekommen. 

     

    Bleibt noch Frage 2: Wie kann ich den Error Code den die API übergibt auslesen?

    Und Frage 4: Wie kann ich das Ergebnis response.result in eine Tabelle schreiben und bestimmen welcher Teil des JSON wo landet?

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Ben,

    2. Eigentlich sollte es beim Error in dem Alert zu lesen sein.

    4. Ich kann dir leider keinen universellen Code liefern um deine json Datei zu parsen. Da muss man schon die responce Datei sehen (und auch die Tabelle kennen). 

    • Benjamin_Kromer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid,

    vielen Dank für deine Antworten!

    Als Beispiel habe ich ein Response-JSON von der Giphy.com API in mein gdrive geladen link:

    https://drive.google.com/file/d/1YyHsq2uyNRh7rsShsZsmaWWZD_iFwM3n/view?usp=sharing

     

    Wenn ich das JSON in Visual Studio Code anschauen sieht der Pfad zu der *.mp4-URL wie folgt aus:

     

    In Python3 bekomme ich das ohne Probleme hin:

     

    In ninox habe ich es versucht mit:

    let re := do as server
    http("GET", "https://api.giphy.com/v1/gifs/trending?api_key=" + giphy_APIkey() + "&limit=1&rating=R", {
    'Content-Type': "application/json"
    }, {})
    end;
    if re.error then
    alert(text(re.error))
    else
    'API Name' := "GIPHY";
    response := text(re.result);
    Querylink := text(re.result.['0'].images.looping.mp4)
    end

    Aber das Feld Querylink enthält nur ein leeres array "[]". Das Feld response funktioniert.

    Ohne die Null wird gar nichts ausgegeben.

    Als nächstes möchte ich dann in einem Berechnungsfeld die mp4 ausgeben bzw als html einbetten.

    html("<video width='100%' preload='true' controls><source src=" + Querylink + " type='video/mp4'></video>")

     

    Vielen Dank im Voraus für deine Hilfe!

    lg

    Ben

    • Benjamin_Kromer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Die Bilder wollten erst nicht mitkommen.... (Fehler:"Payload to high" oder sowas ;) )

     

    Wenn ich das JSON in Visual Studio Code anschauen sieht der Pfad zu der *.mp4-URL wie folgt aus:APIresponseJSON

    In Python3 bekomme ich das ohne Probleme hin:

    Python3Code

    • Benjamin_Kromer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    argh... falsches Bild.

    Bildschirmfoto 2019-07-29 um 10.29.24

    • Benjamin_Kromer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Tatsächlich hab ichs jetzt selbst geschnallt was das Problem ist...^^

    Mit text(re.result.data.['0'].images.looping.mp4) funktioniert es. Das "data" hat hier noch gefehlt...

    Jetzt hatte ich noch das Problem dass die URL im Querylink Textfeld als array ausgegeben wird (["https://media2.giphy.com/media/kz09Btl6RgiZyZDbEh/giphy-loop.mp4?cid=12c52cd65d3eb18a6b77592e413ccc94&rid=giphy-loop.mp4"])und das im HTML code nicht funktioniert. Das konnte ich mit einem slice lösen slice(text(re.result.data.['0'].images.looping.mp4), 1, -1)

    Vielen Dank nochmal!

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 7Antworten
  • 2409Ansichten