[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를 만들 수 있습니다.