🎯 📘 Bagian 2 (Lanjutan & Penerapan) • Modul 17 100% Standar Industri & Vokasi

Pengembangan Backend REST API dengan Dart (Shelf)

Modul pembelajaran Pengembangan Backend REST API dengan Dart (Shelf).

⚡ Pemrograman DART

19. Pengembangan Backend REST API dengan Dart (Shelf)

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}');
}