[我用python创建了flask api项目,它从3-4个不同的api中获取信息并收集它们,将它们映射然后将它们转换为json文件。我也试图用飞镖做类似的事情(用于颤动底座),但是我不明白一些事情。像这样的项目树,我从用户端获取数据,将其引导到主站点api(a1.com),然后从那里获取一个信息,例如“ title”,然后我将该标题寻找到另一个api(a2。 com),它为我提供了一个“ id”,之后我使用另一个网站(a3.com)获得了该ID的“详细信息”,然后我又得到了另一个信息,比如说另一个具有相同id的网站(a4.com)中的“ url”然后我做了一个json地图title,id,details,....,url“。字符串库中也有很多修正,但它们并不重要。问题是在flutter或dart中,我可以获取信息并每4个站点独立映射json文件但我不知道如何用单个输入创建链函数,
Ps:提取后,我不需要将它们转换为json格式,只需要在有效负载中使用它们,例如有效负载,标题,有效负载2.id,有效负载3.detail1,有效负载4.url等。
我在2个站点中尝试过的代码示例如下,我也试图在一个Future中获取所有代码,但我需要从第一个站点获取信息以获取第二个URL,并获取第三个URL ....import 'package:http/http.dart' as http;
import 'dart:convert';
Future getTitle(String name) async{
String myUrl = 'http://a1.com/$userentry';
http.Response response = await http.get(myUrl);
return response == null ? await getData(name) : payloadFromJson(response.body);}
Payload payloadFromJson(String str) => Payload.fromJson(json.decode(str));
String payloadToJson(Payload data) => json.encode(data.toJson());
class Payload {
String title;
Payload({
this.title,
});
factory Payload.fromJson(Map json) => Payload(
title: json["Title"],
);
Map toJson() => {
"Title": title,
};
}
Future getId(String name) async{
String myUrl = 'http://a1.com/$payload.title';
http.Response response = await http.get(myUrl);
return response == null ? await getData(name) : payload2FromJson(response.body);}
Payload2 payload2FromJson(String str) => Payload2.fromJson(json.decode(str));
String payload2ToJson(Payload data) => json.encode(data.toJson());
class Payload2 {
String ID;
Payload2({
this.ID,
});
factory Payload2.fromJson(Map json) => Payload2(
ID: json["ID"],
);
Map toJson() => {
"ID": ID,
};
}
.
.
.
Python版本基本类似;import requests
...etc
app = Flask(__name__)
@app.route('/query', methods=['GET', 'POST'])
def query()
data1= requests.get( 'https://a1.com?query='+userdata)
dataj = data1.json()
title = (str( dataj['title'] ) )
data2 = requests.get( 'https://a2.com?query='+title)
dataj2 = data2.json()
id = (str( dataj['id'] ) )
data3 = requests.get( 'https://a3.com?query='+id)
dataj3 = data3.json()
detail1 = (str( dataj3['detail1'] )
detail2 = (str( dataj3['detail1'] )
detail3 = (str( dataj3['detail1'] )
detail4 = (str( dataj3['detail1'] )
data4 = requests.get( 'https://a4.com?query='+id)
dataj4 = data4.json()
url = (str( dataj4['url'] ) )
.
.
blablalbalba
.
.
try:
return jsonify(finaldata)
except:
query()
if __name__ == '__main__':
app.run(debug=True)