Creare una web api in Dart con shelf

Mattepuffo's logo
Creare una web api in Dart con shelf

Creare una web api in Dart con shelf

Chi ha detto che Dart è valido solo se usato con Flutter?

In realtà è un linguaggio che può essere usato per un sacco di cose, anche lato desktop o server.

In questo articolo vediamo come usare shelf per creare una web api.

Per lo scopo dobbiamo installare due package:

dart pub add shelf shelf_router

Qui sotto un esempio in cui ho creato due rotte diverse:

import 'dart:convert';

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

void main() async {
  final service = Service();
  final server = await shelf_io.serve(service.handler, 'localhost', 8080);
  print('Server running on localhost:${server.port}');
}

class Service {
  Handler get handler {
    final router = Router();

    router.get('/ciao/<name>', (Request request, String name) {
      return Response.ok('Ciao $name');
    });

    router.get('/posts', (Request request) {
      final posts = [
        {'id': 1, 'titolo': 'titolo 1'},
        {'id': 2, 'titolo': 'titolo 2'},
        {'id': 3, 'titolo': 'titolo 3'},
      ];

      return Response.ok(jsonEncode(posts));
    });

    return const Pipeline()
        .addMiddleware(logRequests())
        .addHandler(router.call);
  }
}

Possiamo interrogarle così:

  • http://localhost:8080/ciao/NOME
  • http://localhost:8080/posts

Enjoy!


Condividi

Commentami!