post method
Future<Map<String, dynamic>>
post(
- String path, {
- QueryOption? option,
- Map<String, dynamic>? include = const {},
- Map<String, dynamic>? query = const {},
- dynamic waitRef = true,
- dynamic access = true,
- dynamic refresh = false,
})
Implementation
Future<Map<String,dynamic>> post(String path,{QueryOption? option,Map<String,dynamic>? include=const{},Map<String,dynamic>? query=const{},waitRef=true,access=true,refresh=false}) async {
option = option ?? QueryOption();
return _executeRequest(() async {
var op = await _beforeQuery(option,path:path,include:include,query:query,waitRef:waitRef,access:access,refresh:refresh);
http.Response response;
if(option?.file == true){
final request = await _convertToMultipart('POST',op['url'],option?.data as Map<String,dynamic>,op['headers']);
final streamed = await request.send().timeout(option?.timeout ?? timeout);
response = await http.Response.fromStream(streamed);
}else{
final headers = Map<String,String>.from(op['headers']);
headers['Content-Type'] = 'application/json; charset=UTF-8';
response = await http.post(op['url'],body:option?.data!=null?jsonEncode(option?.data):null,headers:headers).timeout(option?.timeout ?? timeout);
}
var data = await _resHandler(response,fn:(){return post(path,option:option,include:include,query:query,waitRef:waitRef,access:access,refresh:refresh);},refresh:refresh);
if(data is Map && data['body'] != null){ return data as dynamic; }
return {'body':data,'status':response.statusCode,'headers':response.headers};
});
}