shelf_api 1.0.0+1 copy "shelf_api: ^1.0.0+1" to clipboard
shelf_api: ^1.0.0+1 copied to clipboard

A package to declare rest API endpoints that generate into shelf handlers.

example/main.dart

// ignore_for_file: avoid_print

import 'dart:async';
import 'dart:io';

import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart';
import 'package:shelf_api/shelf_api.dart';
import 'package:shelf_router/shelf_router.dart';

import 'format_handler.dart';
import 'riverpod_request_handler.dart';

void main(List<String> args) async {
  final port = int.parse(args.firstOrNull ?? '8080');
  final router = Router()
    ..get('/riverpod', riverpodRequestHandler)
    ..get('/format', formatHandler);

  final app = const Pipeline()
      .addMiddleware(handleFormatExceptions())
      .addMiddleware(logRequests())
      .addMiddleware(rivershelf())
      .addHandler(router.call);

  final server = await serve(app, 'localhost', port);
  print('Serving at http://${server.address.host}:${server.port}');

  final signals = [
    ProcessSignal.sigint,
    if (!Platform.isWindows) ProcessSignal.sigterm,
  ];
  final subs = <StreamSubscription>[];
  for (final signal in signals) {
    subs.add(
      signal.watch().listen((signal) {
        for (final sub in subs) {
          sub.cancel();
        }
        print('Received $signal - terminating server');
        server.close();
      }),
    );
  }
}
0
likes
0
pub points
39%
popularity

Publisher

verified publisherskycoder42.de

A package to declare rest API endpoints that generate into shelf handlers.

Repository (GitHub)
View/report issues

Topics

#server #shelf #dio #rest #api

License

unknown (license)

Dependencies

dio, meta, riverpod, riverpod_annotation, rxdart, shelf, shelf_router

More

Packages that depend on shelf_api