http_rest 1.1.0 copy "http_rest: ^1.1.0" to clipboard
http_rest: ^1.1.0 copied to clipboard

A robust networking library for Dart and Flutter, simplifies HTTP interactions, provides tools for lightweight versatility.

example/main.dart

import 'package:http/http.dart';
import 'package:http/http.dart' as http;
import 'package:http_rest/http_rest.dart';

class AuthorizationMiddleware extends Middleware<RowRequest> {
  @override
  Future<RowRequest> onNext(
      RowRequest row, Middleware<RowRequest> nextMiddleware) async {
    row.request.headers['Authorization'] = 'YOUR AUTHORIZATION TOKEN';
    return await super.onNext(row, nextMiddleware);
  }
}

class BooksAPI {
  final client = HttpRestClient.builder(DefaultRequestExecutor(http.Client()))
      .addResponseConverter(JsonToMapResponseConverter()) // Response Middleware
      .addResponseConverter(StringResponseConverter()) // Response Middleware
      .addRequestConverter(MapToJsonRequestConverter()) // Request converters
      .addRequestMiddleware(AuthorizationMiddleware()) // Request Middleware
      .addRequestMiddleware(RequestLogger()) // Request Middleware
      .addResponseMiddleware(ResponseLogger()) // Response Middlewares
      .build();

  UrlBuilder get _baseUrl => UrlBuilder.base(
      'https://my-json-server.typicode.com/RobertApikyan/JsonData/');

  // POST
  HttpRestRequest addBook(
          {required int id,
          required String bookName,
          required String author}) =>
      HttpRestRequest(
          method: Methods.post,
          requestConverterType: MapToJsonRequestConverter,
          // Specifies request converter type
          responseConverterType: JsonToMapResponseConverter,
          // Specifies response converter type
          url: _baseUrl.url('books').toString(),
          headers: {'Language': 'en'},
          body: {"id": id, "bookName": bookName, "author": author});

  // GET
  HttpRestRequest getBooks() => HttpRestRequest(
      method: Methods.get,
      requestConverterType: MapToJsonRequestConverter,
      // Specifies request converter type
      responseConverterType: JsonToMapResponseConverter,
      // Specifies response converter type
      url: _baseUrl.url('books').toString(),
      headers: {'Language': 'en'});

  // POST MULTIPART
  HttpRestRequest uploadBook(MultipartFile multipartFile,
          HttpMultipartRequestProgressListener progressListener) =>
      HttpRestRequest(
        method: Methods.post,
        responseConverterType: JsonToMapResponseConverter,
        url: 'book',
        headers: {'Language': 'en'},
        body: MultipartRequestBody(
          fields: {},
          files: [multipartFile],
          progressListener: progressListener,
        ),
      );
}

void main() async {
  final booksApi = BooksAPI();
  final booksResult = await booksApi.client.execute(booksApi.getBooks());
  if (booksResult.rowResponse.code == 200) {
    print(booksResult.response.toString());
  }

  final createBookResult = await booksApi.client.execute(booksApi.addBook(
      id: 1,
      bookName: 'UNIX Network Programming',
      author: 'W. Richard Stevens'));
  if (createBookResult.rowResponse.code == 201) {
    print(booksResult.response.toString());
  }

  // final uploadBookResult = await booksApi.client.execute(booksApi.uploadBook(
  //     await MultipartFile.fromPath('file', File('yourFilePath').path,
  //         filename: 'UNIX Network Programming.pdf',
  //         contentType: MediaType('video', 'webm')),
  //     (bytes, totalBytes) {}));
}
2
likes
150
pub points
51%
popularity

Publisher

unverified uploader

A robust networking library for Dart and Flutter, simplifies HTTP interactions, provides tools for lightweight versatility.

Repository (GitHub)
View/report issues

Topics

#network #http #rest

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

http

More

Packages that depend on http_rest