RESTful API를 설계할 때, 클라이언트와 서버 간의 데이터 전송을 효율적으로 처리하기 위해 경로 매개변수와 쿼리 매개변수를 사용하는 것이 중요합니다.
이 글에서는 Dart에서 경로 매개변수와 쿼리 매개변수를 처리하는 방법을 초보자도 이해할 수 있도록 쉽게 설명하겠습니다.
1. 경로 매개변수란?
경로 매개변수는 URI(Uniform Resource Identifier)의 일부로 사용되어 자원을 식별하거나 특정 자원에 접근할 때 필요한 추가 정보를 전달하는 방법입니다.
예를 들어, 사용자의 ID를 포함하여 특정 사용자의 정보를 요청할 수 있습니다.
1.1 경로 매개변수의 예
경로 매개변수는 URI의 경로 부분에 위치합니다. 예를 들어, /users/{id}에서 {id}가 경로 매개변수입니다. 클라이언트는 이 ID를 사용하여 특정 사용자의 정보를 요청할 수 있습니다.
예시
- 모든 사용자 목록 조회: GET /users
- 특정 사용자 조회: GET /users/123
여기서 123은 경로 매개변수입니다.
2. 쿼리 매개변수란?
쿼리 매개변수는 URI의 끝에 붙어 ?로 시작하여 여러 개의 매개변수를 &로 구분하는 방식입니다.
주로 필터링, 정렬, 페이지네이션 등의 기능을 제공하는 데 사용됩니다.
2.1 쿼리 매개변수의 예
쿼리 매개변수는 URI의 끝에 ?로 시작하여 추가 정보를 전달합니다. 예를 들어, /users?age=25&sort=name에서 age와 sort가 쿼리 매개변수입니다.
예시
- 특정 나이의 사용자 조회: GET /users?age=25
- 이름으로 정렬된 사용자 목록 조회: GET /users?sort=name
3. Dart에서 경로 매개변수 및 쿼리 매개변수 처리하기
Dart에서는 shelf와 shelf_router 패키지를 사용하여 RESTful API를 구현할 수 있습니다.
이 패키지들을 사용하면 경로 매개변수와 쿼리 매개변수를 쉽게 처리할 수 있습니다.
3.1 경로 매개변수 처리
Shelf_router를 사용하여 경로 매개변수를 처리하는 방법을 살펴보겠습니다.
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;
import 'package:shelf_router/shelf_router.dart';
void main() async {
final router = Router();
// 특정 사용자 조회
router.get('/users/<id>', (Request request, String id) {
return Response.ok('{"user": "$id"}', headers: {'Content-Type': 'application/json'});
});
// 서버 시작
final server = await io.serve(router.handler, 'localhost', 8080);
print('Server running on http://${server.address.host}:${server.port}');
}
설명
- /users/<id> URI에서 <id>는 경로 매개변수입니다.
- Router의 get 메서드를 사용하여 경로 매개변수를 처리하고, 요청된 ID에 따라 응답을 반환합니다.
3.2 쿼리 매개변수 처리
쿼리 매개변수는 Request 객체의 request.url.queryParameters 속성을 통해 처리할 수 있습니다.
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;
import 'package:shelf_router/shelf_router.dart';
void main() async {
final router = Router();
// 사용자 목록 조회 (쿼리 매개변수 처리)
router.get('/users', (Request request) {
final age = request.url.queryParameters['age'];
final sort = request.url.queryParameters['sort'];
return Response.ok(
'{"age": "$age", "sort": "$sort"}',
headers: {'Content-Type': 'application/json'}
);
});
// 서버 시작
final server = await io.serve(router.handler, 'localhost', 8080);
print('Server running on http://${server.address.host}:${server.port}');
}
설명
- /users URI에서 쿼리 매개변수를 처리합니다.
- request.url.queryParameters를 사용하여 age와 sort 매개변수를 추출하고 응답으로 반환합니다.
경로 매개변수와 쿼리 매개변수는 RESTful API를 설계할 때 데이터를 효율적으로 전달하고 요청을 처리하는 데 중요한 역할을 합니다. Dart의 shelf와 shelf_router 패키지를 사용하여 이러한 매개변수를 쉽게 처리할 수 있습니다.
이 글을 통해 기본적인 경로 및 쿼리 매개변수 처리 방법을 이해하고, 실습을 통해 더 나아가 보세요!
구독!! 공감과 댓글은 저에게 큰 힘이 됩니다.
Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.
'Dart > Dart Server' 카테고리의 다른 글
[중급] Dart 서버 프레임워크 이해하기/ 각 프레임워크의 설치 및 기본 사용법 (0) | 2024.09.09 |
---|---|
[중급] Dart 서버 프레임워크 이해하기/대표적인 Dart 서버 프레임워크 소개 (Aqueduct, Shelf ) (2) | 2024.09.09 |
[초급] Dart RESTful API 설계 기초/ CRUD 작업을 위한 기본 API 엔드포인트 설계 (1) | 2024.09.08 |
[초급] Dart RESTful API 설계 기초/RESTful API의 기본 원칙과 설계 (0) | 2024.09.08 |
[초급] Dart Server JSON 처리 및 데이터 직렬화/ 간단한 API 서버 구축하기: JSON 데이터 반환 및 처리 (0) | 2024.09.06 |