1. 개요
Dart는 내장 라이브러리인 dart:io를 사용하여 HTTP 서버를 구축할 수 있습니다. 이 라이브러리는 네트워크 통신, 파일 시스템 접근 등 다양한 I/O 작업을 지원합니다. 이번 포스트에서는 Dart의 dart:io 라이브러리를 사용하여 간단한 HTTP 서버를 만드는 방법을 알아보겠습니다.
2. Dart HTTP 서버 만들기
1. Dart SDK 설치
먼저, Dart SDK가 설치되어 있는지 확인합니다. Dart SDK가 설치되어 있지 않다면 Dart 공식 웹사이트에서 설치 방법을 확인할 수 있습니다.
2. 프로젝트 생성
Dart 프로젝트를 생성하고 필요한 파일을 설정합니다. 터미널에서 다음 명령어를 실행하여 새 Dart 프로젝트를 만듭니다.
dart create simple_http_server
cd simple_http_server
이 명령어는 simple_http_server라는 디렉토리 안에 새로운 Dart 프로젝트를 생성합니다.
3. HTTP 서버 코드 작성
프로젝트 디렉토리 내의 lib 폴더 안에 server.dart라는 파일을 생성하고, 다음 코드를 작성합니다.
import 'dart:io';
void main() async {
// 서버를 실행할 IP와 포트를 설정합니다.
final address = InternetAddress.loopbackIPv4; // 로컬호스트
final port = 8080;
// HTTP 서버를 바인딩합니다.
final server = await HttpServer.bind(address, port);
print('Listening on http://${address.host}:$port/');
// 클라이언트의 요청을 처리합니다.
await for (HttpRequest request in server) {
// 클라이언트의 요청에 대한 응답을 설정합니다.
request.response
..statusCode = HttpStatus.ok
..headers.contentType = ContentType.text
..write('Hello, Dart HTTP Server!')
..close();
}
}
이 코드에서는
- InternetAddress.loopbackIPv4를 사용하여 로컬호스트(127.0.0.1)에서 서버를 실행합니다.
- HttpServer.bind 메서드를 사용하여 지정한 IP와 포트에서 서버를 바인딩합니다.
- 클라이언트의 요청을 비동기적으로 처리하며, 모든 요청에 대해 "Hello, Dart HTTP Server!"라는 응답을 보냅니다.
4. 서버 실행
터미널에서 다음 명령어를 실행하여 서버를 시작합니다.
dart run lib/server.dart
서버가 실행되면 터미널에 다음과 같은 메시지가 표시됩니다.
Listening on http://127.0.0.1:8080/
웹 브라우저를 열고 http://localhost:8080/에 접속하면 "Hello, Dart HTTP Server!"라는 응답을 확인할 수 있습니다.
3. 서버에 추가 기능 추가하기
서버를 좀 더 유용하게 만들기 위해 요청의 경로에 따라 다르게 응답하도록 코드를 확장할 수 있습니다. 다음 예제에서는 요청 경로에 따라 다른 메시지를 응답하도록 설정합니다.
import 'dart:io';
void main() async {
final address = InternetAddress.loopbackIPv4;
final port = 8080;
final server = await HttpServer.bind(address, port);
print('Listening on http://${address.host}:$port/');
await for (HttpRequest request in server) {
// 요청 경로에 따라 다른 응답을 보냅니다.
final path = request.uri.path;
if (path == '/') {
request.response
..statusCode = HttpStatus.ok
..headers.contentType = ContentType.text
..write('Welcome to the Dart HTTP Server!')
..close();
} else if (path == '/hello') {
request.response
..statusCode = HttpStatus.ok
..headers.contentType = ContentType.text
..write('Hello from /hello path!')
..close();
} else {
request.response
..statusCode = HttpStatus.notFound
..headers.contentType = ContentType.text
..write('404 Not Found')
..close();
}
}
}
이 코드에서는 / 경로와 /hello 경로에 대해 각각 다른 응답을 보내며, 그 외의 경로에 대해서는 404 오류 응답을 보냅니다.
4. 요약
- Dart SDK 설치: Dart SDK를 설치하고 프로젝트를 생성합니다.
- 서버 코드 작성: dart:io 라이브러리를 사용하여 HTTP 서버를 설정하고 클라이언트의 요청을 처리합니다.
- 서버 실행: dart run 명령어로 서버를 실행하고 웹 브라우저를 통해 테스트합니다.
- 추가 기능: 요청 경로에 따라 다른 응답을 설정하여 서버의 기능을 확장할 수 있습니다.
이 포스트가 Dart로 HTTP 서버를 구축하는 데 도움이 되기를 바랍니다. Dart의 dart:io 라이브러리를 사용하여 간단한 서버를 설정하고, 요청을 처리하는 방법을 이해하는 데 유용한 정보가 되길 바랍니다.
구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.