728x90
반응형
1. HTTP 서버 기본 설정
우선, 기본적인 HTTP 서버를 설정하고, GET 및 POST 요청을 처리할 수 있도록 합니다. 아래의 코드는 Dart의 dart:io 라이브러리를 사용하여 간단한 HTTP 서버를 설정하고, GET 및 POST 요청을 처리하는 예제입니다.
1.1. 프로젝트 설정
프로젝트 디렉토리에서 다음 파일을 생성합니다.
- lib/server.dart
1.2. HTTP 서버 코드
server.dart 파일에 다음 코드를 작성합니다.
import 'dart:convert'; // JSON 디코딩을 위해 필요
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) {
// 요청 메서드에 따라 처리
if (request.method == 'GET') {
await handleGetRequest(request);
} else if (request.method == 'POST') {
await handlePostRequest(request);
} else {
// 지원하지 않는 메서드에 대해 405 응답
request.response
..statusCode = HttpStatus.methodNotAllowed
..headers.contentType = ContentType.text
..write('405 Method Not Allowed')
..close();
}
}
}
// GET 요청 처리
Future<void> handleGetRequest(HttpRequest request) async {
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 == '/info') {
request.response
..statusCode = HttpStatus.ok
..headers.contentType = ContentType.json
..write(jsonEncode({'message': 'This is a GET request response'}))
..close();
} else {
request.response
..statusCode = HttpStatus.notFound
..headers.contentType = ContentType.text
..write('404 Not Found')
..close();
}
}
// POST 요청 처리
Future<void> handlePostRequest(HttpRequest request) async {
// POST 요청의 바디를 읽어들입니다.
final content = await utf8.decoder.bind(request).join();
final data = jsonDecode(content);
// 요청의 바디 내용 출력
print('Received POST data: $data');
request.response
..statusCode = HttpStatus.ok
..headers.contentType = ContentType.json
..write(jsonEncode({'message': 'POST request received', 'data': data}))
..close();
}
2. 코드 설명
- 서버 설정: HttpServer.bind 메서드를 사용하여 IP와 포트를 지정하고, 서버를 바인딩합니다.
- 요청 처리: await for (HttpRequest request in server) 구문을 사용하여 클라이언트의 요청을 비동기적으로 처리합니다.
- GET 요청 처리:
- 루트 경로(/)에 대해 "Welcome to the Dart HTTP Server!"라는 응답을 보냅니다.
- /info 경로에 대해 JSON 형식의 응답을 보냅니다.
- 다른 경로에 대해서는 404 Not Found 응답을 보냅니다.
- POST 요청 처리:
- 요청의 바디를 읽고, JSON 디코딩을 통해 내용을 파싱합니다.
- 수신한 데이터는 콘솔에 출력하고, JSON 형식의 응답을 클라이언트에 반환합니다.
3. 서버 실행 및 테스트
서버를 실행하려면 터미널에서 다음 명령어를 입력합니다.
dart run lib/server.dart
서버가 실행된 후, 다음 방법으로 GET과 POST 요청을 테스트할 수 있습니다:
- GET 요청 테스트:
- 웹 브라우저를 열고 http://localhost:8080/에 접속하면 "Welcome to the Dart HTTP Server!" 메시지를 확인할 수 있습니다.
- http://localhost:8080/info에 접속하면 JSON 형식의 응답을 확인할 수 있습니다.
- POST 요청 테스트:
- Postman이나 curl 명령어를 사용하여 POST 요청을 보낼 수 있습니다.
- 예를 들어, curl 명령어를 사용하여 POST 요청을 보내려면 다음과 같이 입력합니다.
curl -X POST http://localhost:8080/ -H "Content-Type: application/json" -d '{"key": "value"}'
이 요청에 대해 서버는 JSON 형식으로 응답을 반환합니다.
4. 요약
- GET 요청 처리: 요청 경로에 따라 다른 응답을 생성하고, 기본적인 응답을 반환합니다.
- POST 요청 처리: 요청의 바디를 읽어 JSON 데이터를 파싱하고, 이를 기반으로 응답을 생성합니다.
- 서버 실행 및 테스트: 서버를 실행하고, 웹 브라우저 또는 도구를 사용하여 GET 및 POST 요청을 테스트합니다.
이 포스트가 Dart를 사용하여 GET과 POST 요청을 처리하는 데 도움이 되기를 바랍니다. Dart의 dart:io 라이브러리를 활용하여 간단하면서도 유용한 HTTP 서버를 구축할 수 있습니다.
구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
728x90
반응형
'Dart > Dart Server' 카테고리의 다른 글
[초급] Dart Server JSON 처리 및 데이터 직렬화/JSON 데이터를 다루는 기본 방법 (4) | 2024.09.06 |
---|---|
[초급] Dart로 간단한 서버 구축하기/라우팅 기초: 경로에 따른 요청 처리 (0) | 2024.09.05 |
[초급] 서버 개발 개요/기본적인 서버-클라이언트 구조와 HTTP 프로토콜 이해 (3) | 2024.09.02 |
[초급] 서버 개발 개요/Dart 서버 개발을 위한 필수 도구 및 환경 설정 (Dart SDK, IDE, 패키지 매니저 등) (1) | 2024.09.02 |
[초급] 서버 개발 개요/서버 개발의 기본 개념과 Dart의 강점 (0) | 2024.09.02 |