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!
dart shelf jsonencode
Commentami!