[dart] Dart로 RESTful API 만들기

Dart는 강력한 프로그래밍 언어로, 웹 어플리케이션 개발을 위한 효율적인 언어 중 하나입니다. 이 포스트에서는 Dart로 간단한 RESTful API를 만드는 방법을 살펴보겠습니다.

1. 프로젝트 설정

Dart 프로젝트를 시작하려면 먼저 pubspec.yaml 파일에 aqueduct 패키지를 추가해야 합니다.

dependencies:
  aqueduct: ^4.0.0

그런 다음 아래 명령으로 패키지를 설치합니다.

pub get

2. 모델 작성

간단한 모델을 작성하여 데이터베이스와 상호작용할 수 있도록 합니다. 예를 들어, 사용자를 나타내는 User 모델을 작성해보겠습니다.

import 'package:aqueduct/aqueduct.dart';

class User extends Serializable {
  @override
  Map<String, dynamic> asMap() {
    return {'id': id, 'name': name};
  }

  @override
  void readFromMap(Map<String, dynamic> object) {
    id = object['id'] as int;
    name = object['name'] as String;
  }

  int id;
  String name;
}

3. 컨트롤러 작성

다음으로, RESTful API를 처리할 컨트롤러를 작성합니다.

import 'package:aqueduct/aqueduct.dart';

class UserController extends ResourceController {
  final List<User> users = [];

  @Operation.get()
  Future<Response> getUsers() async {
    return Response.ok(users);
  }

  @Operation.get('id')
  Future<Response> getUser(@Bind.path('id') int id) async {
    final user = users.firstWhere((user) => user.id == id, orElse: () => null);
    if (user == null) {
      return Response.notFound();
    }
    return Response.ok(user);
  }

  @Operation.post()
  Future<Response> createUser(@Bind.body() User user) async {
    users.add(user);
    return Response.ok(user);
  }
}

4. 라우팅 설정

라우팅 설정을 통해 요청이 처리될 컨트롤러를 매핑합니다.

import 'package:aqueduct/aqueduct.dart';
import 'user_controller.dart';

class MyAppChannel extends ApplicationChannel {
  @override
  Future prepare() async {
    final userController = UserController();
    Router router = Router();

    router.route('/users').link(() => userController);
    router.route('/users/:id').link(() => userController);

    bind(router);
  }
}

5. 서버 실행

마지막으로, 애플리케이션을 실행하여 RESTful API를 테스트합니다.

import 'my_app_channel.dart';

Future main() async {
  final app = Application<MyAppChannel>()
    ..options.configurationFilePath = "config.yaml"
    ..options.port = 8888;

  await app.start(numberOfInstances: 3);
}

이제 RESTful API가 준비되었습니다. Dart와 aqueduct 패키지를 사용하면, 간단하면서도 강력한 RESTful API를 만들 수 있습니다.

참고 자료