In einer Lua-Datei möchte ich zwei APIs aufrufen und Daten von beiden gleichzeitig abrufen. Bis jetzt habe ich es geschafft, eine API aufzurufen und Daten zu drucken, aber bin nicht sicher, wie ich den zweiten Aufruf aufrufen soll, indem ich die Zeichenfolge aus dem ersten API-Aufruf verwende.Lua - wie man eine durch einen API-Aufruf erhaltene Zeichenkette weiterleitet, um einen anderen API-Aufruf aufzurufen
local json = require("json")
local function networkListener(event)
local res = json.prettify(event.response)
local decoded = json.decode(res)
if (event.isError) then
print("--Network error-- ", (res))
else
print("Data: " .. (res))
print(decoded.results.bindings[1].person.value)
print(decoded.results.bindings[1].type.value)
local dbpuri = decoded.results.bindings[1].person.value
local wikititle = string.gsub(dbpuri, "http://dbpedia.org/resource/", "")
print (wikititle)
end
end
local headers = {}
headers["Content-Type"] = "application/json"
local body = ""
local params = {}
params.headers = headers
params.body = body
network.request("https://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=select+*%0D%0Awhere+{%3Fperson+rdfs%3Alabel+%3Fperson_name+%3B+rdf%3Atype+%3Ftype+%3B+dbo%3AbirthDate+%3Fbirthdate+.%0D%0A++++bind(rand(1+%2B+strlen(str(%3Fperson))*0)+as+%3Frid)%0D%0AFILTER+regex(%3Ftype%2C+%22Person%22)%0D%0A}+order+by+%3Frid%0D%0ALIMIT+10&format=text%2Fhtml&CXML_redir_for_subjs=121&CXML_redir_for_hrefs=&timeout=30000&debug=on&format=json", "GET", networkListener, params)
Dies ist die erste API-Aufruf (Erfolg), aber ich möchte die lokale Variable „WikiTitle“ passieren die zweite API-Aufruf aufzurufen. Ich habe einen fast identischen Code knapp unter dem vorherigen Code (siehe unten), aber es wird eine Fehlermeldung: „Versuch, lokal‚WikiTitle‘(einen Null-Wert) zu verketten ...“
local json = require("json")
local function networkListener(event)
local res = json.prettify(event.response)
local decoded = json.decode(res)
if (event.isError) then
print("--Network error-- ", (res))
else
print("Data: " .. (res))
print(decoded.query.pages.original.source)
print(decoded.warnings.pageimages)
end
end
local headers = {}
headers["Content-Type"] = "application/json"
local body = ""
local params = {}
params.headers = headers
params.body = body
network.request("https://en.wikipedia.org/w/api.php?action=query&prop=pageimages&format=json&piprop=original&titles="..wikititle.."", params)
Ich bin ein Anfänger in Lua, aber kann mir jemand helfen, eine gute Lösung zu finden? (Ich denke, ich sollte mit forward-Deklaration tun, und es ist am besten, wenn ich vermeiden kann, den Code für die zwei API-Aufrufe im Code zu wiederholen). Danke vielmals!
Großartig! Es funktioniert gut. Vielen Dank! – user7665853