buildApiServer method
Implementation
@override
ApiServer buildApiServer() {
return ApiServerHttp(
name: apiServerName,
host : host,
port : port,
scheme: scheme,
builder: _builder,
uriBuilder: (scheme, host, port, path, method, input) {
if(method == HttpMethod.GET
&& input != null
&& (input is Map)
){
Map<String,dynamic> query = input as Map<String, dynamic>;
return Uri(scheme: scheme, host:host, port:port, path: path, queryParameters: query);
}else{
return Uri(scheme: scheme, host:host, port:port, path: path);
}
},
requestBuilder: (request, method, input) async {
request.headers['Accept-Encoding'] = 'gzip';
request.headers['Accept'] = 'application/json';
},
responseParser: (response, method, output) async {
if(response.statusCode != 200){
throw new Exception("error status = ${response.statusCode}");
}
if(output is Map && response is StreamedResponse){
String str = await response.stream.transform(Utf8Decoder()).join();
if(str.isNotEmpty){
Map json = JsonDecoder().convert(str);
if(json.containsKey("exception")){
throw new Exception("server side error = ${json['exception']}");
}
output.addAll(json);
}
}
},
);
}