createJSONClient function

Future<Response> createJSONClient(
  1. List<String> args, {
  2. required String baseURL,
  3. List<Interceptor> interceptors = const [],
  4. bool printResponse = true,
})

Prepare almost zero-config JSON client. This method

  • parse CLI args
  • execute HTTP request
  • insert an interceptor for setting Accept and Content-Type header to application/json
  • automarically print the response body if printResponse

Implementation

Future<http.Response> createJSONClient(
  List<String> args, {
  required String baseURL,
  List<http.Interceptor> interceptors = const [],
  bool printResponse = true,
}) async {
  final requestContext = http.RequestContext(
    baseURL: baseURL,
    interceptors: <http.Interceptor>[
      injectHeadersForJsonRequest,
      ...interceptors,
    ],
  );
  final request = await buildRequestFromArgs(args);
  final response = await requestContext.executeRequest(request);

  if (printResponse) {
    final responseBody = response.body;
    if (responseBody != null) {
      stdout.writeln(responseBody);
    }
  }
  return response;
}