1. Konsep Full-Stack Dart
Dengan Dart, pengembang dapat menggunakan satu bahasa yang sama untuk membangun aplikasi mobile (Flutter), aplikasi web, dan server backend (menggunakan framework Shelf atau Dart Frog). Model ini memungkinkan kita berbagi kode model data, validasi, dan logika bisnis antar frontend dan backend secara 100% konsisten.
2. Membuat Server HTTP REST API Sederhana
import 'dart:convert';
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as shelf_io;
import 'package:shelf_router/shelf_router.dart';
void main() async {
final appRouter = Router();
// Endpoint GET: Status Server
appRouter.get('/api/status', (Request request) {
return Response.ok(
jsonEncode({'status': 'ONLINE', 'waktu': DateTime.now().toIso8601String()}),
headers: {'content-type': 'application/json'},
);
});
// Endpoint GET: Daftar Modul Pembelajaran
appRouter.get('/api/modul', (Request request) {
final modulList = [
{'id': 1, 'judul': 'Pengenalan Dart'},
{'id': 19, 'judul': 'Backend REST API'},
{'id': 20, 'judul': 'Integrasi Flutter'}
];
return Response.ok(
jsonEncode(modulList),
headers: {'content-type': 'application/json'},
);
});
// Pipeline Middleware: Logging request otomatis
final handler = Pipeline()
.addMiddleware(logRequests())
.addHandler(appRouter.call);
// Menjalankan Server di Port 8080
final server = await shelf_io.serve(handler, '0.0.0.0', 8080);
print('Server REST API Dart aktif di http://${server.address.host}:${server.port}');
}