Flutter 如何在http POST请求正文中发送数组
我有一个要添加到购物车的对象数组,我必须在POST请求中将其作为body参数发送,如下所示:Flutter 如何在http POST请求正文中发送数组,flutter,dart,http-post,Flutter,Dart,Http Post,我有一个要添加到购物车的对象数组,我必须在POST请求中将其作为body参数发送,如下所示: [ {"value":74,"key":"product_attribute_53_12_25"}, {"value":3,"key":"product_attribute_1_6_2"}, {"value":6,"key"
[
{"value":74,"key":"product_attribute_53_12_25"},
{"value":3,"key":"product_attribute_1_6_2"},
{"value":6,"key":"product_attribute_1_3_3"},
{"value":8,"key":"product_attribute_1_4_4"},
{"value":10,"key":"product_attribute_1_8_5"},
{"value":5,"key":"addtocart_53.EnteredQuantity"}
]
这是我的服务:
Future<AddToCartModelResponse> addToCartService() async {
AddToCartModelResponse model = AddToCartModelResponse();
Uri uri = Uri.parse(Constants.baseUrl + "AddProductToCart/53/1");
Map<String, String> header = {
"NST": Constants.NST,
"Content-Type": "application/json",
};
var body = {
//???????????
};
try {
var response = await http.post(uri, body: body, headers: header);
print(response.body);
if (response.statusCode == 200) {
model = AddToCartModelResponse.fromJson(json.decode(response.body));
return model;
} else {
model = AddToCartModelResponse.fromJson(json.decode(response.body));
model.statusCode = response.statusCode;
return model;
}
} on TimeoutException catch (error, stack) {
print('error time');
model.statusCode = 500;
return model;
} catch (error, stack) {
print(error);
model.statusCode = 500;
return model;
}
}
Future addToCartService()异步{
AddToCartModelResponse模型=AddToCartModelResponse();
Uri=Uri.parse(Constants.baseUrl+“AddProductToCart/53/1”);
映射头={
“NST”:Constants.NST,
“内容类型”:“应用程序/json”,
};
变量体={
//???????????
};
试一试{
var response=wait http.post(uri,body:body,headers:header);
打印(响应.正文);
如果(response.statusCode==200){
model=AddToCartModelResponse.fromJson(json.decode(response.body));
收益模型;
}否则{
model=AddToCartModelResponse.fromJson(json.decode(response.body));
model.statusCode=response.statusCode;
收益模型;
}
}on TimeoutException捕获(错误,堆栈){
打印(“错误时间”);
model.statusCode=500;
收益模型;
}捕获(错误,堆栈){
打印(错误);
model.statusCode=500;
收益模型;
}
}
这里,带有参数的uri集以及我的主体参数来自productDetail,如下所示:
[
{"value":74,"key":"product_attribute_53_12_25"},
{"value":3,"key":"product_attribute_1_6_2"},
{"value":6,"key":"product_attribute_1_3_3"},
{"value":8,"key":"product_attribute_1_4_4"},
{"value":10,"key":"product_attribute_1_8_5"},
{"value":5,"key":"addtocart_53.EnteredQuantity"}
]
[{“key”:“product_attribute{productId}{attributeId}{Id}”,“value”:{attrValueId},{“value”:{quantity},“key”:“addtocart{productId}.EnteredQuantity”}
]主体可以是
地图
或列表
:
Future addToCartService()异步{
AddToCartModelResponse模型=AddToCartModelResponse();
Uri=Uri.parse(Constants.baseUrl+“AddProductToCart/53/1”);
映射头={
“NST”:Constants.NST,
“内容类型”:“应用程序/json”,
};
变量体=[
{“value”:74,“key”:“product_attribute_53_12_25”},
{“value”:3,“key”:“product_attribute_1_6_2”},
{“value”:6,“key”:“product_attribute_1_3_3”},
{“value”:8,“key”:“product_attribute_1_4_4”},
{“value”:10,“key”:“product_attribute_1_8_5”},
{“值”:5,“键”:“addtocart_53.EnteredQuantity”}
];
试一试{
var response=wait http.post(uri,body:body,headers:header);
打印(响应.正文);
如果(response.statusCode==200){
model=AddToCartModelResponse.fromJson(json.decode(response.body));
收益模型;
}否则{
model=AddToCartModelResponse.fromJson(json.decode(response.body));
model.statusCode=response.statusCode;
收益模型;
}
}on TimeoutException捕获(错误,堆栈){
打印(“错误时间”);
model.statusCode=500;
收益模型;
}捕获(错误,堆栈){
打印(错误);
model.statusCode=500;
收益模型;
}
}
或者,如果您从模特身上取下身体:
班车{
列出产品清单;
列表toJson(){
return products.map((p)=>p.toJson()).toList();
}
}
/*...*/
未来addToCartService(购物车)异步{
/*...*/
var body=cart.toJson();
/*...*/
}
您为什么要手工操作?这个后端是否没有某种描述,比如一个招摇过市的文件?也许是时候告诉后端的家伙们升级他们的游戏并提供一个。我们有一个邮递员收藏。但是我该怎么写这篇文章呢?请告诉我另一种方式,我的意思是,任何专业的REST API都会有一个接口描述文件,如swagger或OpenAPI(),您将生成此代码,而不是为每个函数手工编写。第一种方式有效,当我在POST请求中添加JSONECODE(body)时