본문 바로가기
Dart/Dart Server

[초급] Dart RESTful API 설계 기초/ 경로 매개변수 및 쿼리 매개변수 처리

by Maccrey Coding 2024. 9. 8.
반응형

 

 

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.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

반응형