Dart, Aqueduct 및 PostgreSQL을 사용하여 RESTful 웹 API 구축 — 섹션 1

10494 단어 dartwebdevsqlapi

참고: Dart 2부터 나룻배의 API가 변경되어 중대한 변화가 발생했습니다.본고는 Dart v1의 나룻배 2.5.0을 바탕으로 한다.
나는 이미 그것을 새로운 비디오 시리즈로 업데이트했다. http://bit.ly/aqueduct-tutorial
또 다른 RESTful API 강좌(#yetanotherrat)의 새로운 시리즈에서 우리는 Dart 플랫폼과 서버 측 응용 프로그램을 구축할 때 제공하는 기능을 탐색할 것이다.
Dart 언어를 탐색한 후에 나는 Dart를 사용하여 RESTful 서비스를 구축하는 방법을 연구해 왔다.진일보한 발굴에서 나는 우연히 나루터를 발견했다.첫눈에 그것이 제2판을 통과한 것을 보았는데 인상적이었다. 문서의 내용이 전면적이고 이해하기 쉬운 예시를 발견하면 나는 더욱 탐색해야 한다고 확신했다.
이런 풍부한 효과와 새로운 시간을 겪은 후에 저는 지금 여러분과 함께 이 여정에 올라 처음부터 끝까지 일api를 구축할 수 있어서 매우 기쁩니다!
영상 좋아해요?Watch on Youtube

그럼 나루터가 뭐예요?


이것은 서버에서 RESTful WebAPI를 만들고 배치하는 데 사용되는 소스 프레임워크입니다.그것은 유사한 맛 표현과 하피, 심지어.포괄적인 기능 목록이 있는 입구점을 제공하는 NET 웹 API
내가 가장 좋아하는 것은:
  • 유체, 연결 배선 가능.루트 및 처리 프로그램 방법을 구성하는 함수 스타일
  • CLI 도구이것은 명령을 보내서 다음 항목을 구축할 수 있도록 합니다

  • 다중 스레드는 상자를 열면 바로 사용할 수 있다.Dart의 격리를 통해 애플리케이션의 여러 인스턴스를 추가하고 서버의 모든 CPU 코어를 확장합니다.
  • 에는 내장형 ORM이 있습니다.만약 관계 데이터베이스를 사용한다면, 이것은 당신이 반드시 갖추어야 하는 것입니다!데이터베이스 마이그레이션도 지원됩니다.
  • 에 통합 테스트 라이브러리가 있습니다.모든 걸 테스트해야 하니까!TravisCI 등의 도구를 잘 사용할 수 있습니다.
  • 이 시리즈에서, 우리는 개인 읽기 목록 (우리는 FaveReads라고 부른다) 을 위한api를 구축할 것이다📚), 다음 항목이 포함됩니다.

  • 제1부분: 설정 및 실행 예시 (우리 여기 있습니다)




  • 😄

  • 설정 및 실행 예


    만약 당신이 아직 없다면, 나는 당신이 install the Dart SDK으로 전화하는 것을 건의합니다.Windows, Mac 및 Linux에 대한 설명이 있습니다.
    터미널을 확인하여 Dart가 실행 중인지 확인할 수 있습니다.
    dart --version
    
    Dart는 가방을 관리하기 위해pub라는 도구를 덧붙였습니다.이 도구를 사용하여 나루터를 설치합니다.
    pub global activate aqueduct
    
    이를 통해 aqueduct 실행 가능한 파일에 액세스할 수 있습니다.작업 디렉토리로 전환하여 프로젝트를 만듭니다.
    aqueduct create fave_reads && cd fave_reads
    
    현재 fave_reads 디렉터리에 모든 프로젝트 파일을 포함해야 합니다.현재, 우리는 중점적으로 관심을 기울일 것이다.
    bin/
      main.dart
    lib/
      fave_reads_sink.dart
    pubspec.yaml
    

  • 쓰레기통.dart 서버 생성 및 응용 프로그램 시작

  • lib/fave_reads_sink.dart 설정 프로그램 사용

  • 공공 규범.yaml은 프로젝트에 대한 메타데이터를 포함합니다.가방이 있는 것과 유사하다.노드의 json.js 개발
  • 다음 명령 중 하나를 사용하여 응용 프로그램을 시작합니다.
    aqueduct serve # or `dart bin/main.dart`
    
    이제 시작:

    현재 http://localhost:8081/example에서 실행되고 있는 서버가 있습니다.http://localhost:8081/example에 액세스하면 다음 응답이 반환됩니다.
    { "key": "value" }
    
    이 점에서 특히 나루터는 문서에 따라 RequestSink라는 개념을 가지고 있다.

    handles the initialization of an application, including setting up routes, authorization and database connections.


    응용 프로그램은 요청을 받기 위해 RequestSink 하위 클래스가 필요합니다.우리의 예시에서 FaveReadsSink은 기본 RequestSink류를 확장하여 우리로 하여금 자신의 실현으로 그 방법을 다시 쓸 수 있게 한다.이것들은 setupRouterwillOpen입니다.첫 번째 방법은 관련 컨트롤러와 다른 중간부품을 사용하여 루트를 정의할 수 있도록 하고, 후자는 루트 설정 후와 응용 프로그램이 요청을 받기 전에 비동기적으로 초기화할 수 있도록 합니다.
    현재 요청의 경우 기본 응답 유형은 JSON으로 설정됩니다.그러나 이것은 우리의 요구를 만족시키기 위한 모든 내용 유형으로 설정할 수 있다.
    setupRouter 방법에서 두 번째 길을 만들어서 이 점을 보여 드리겠습니다.
    router.route('/').listen((request) async {
      return new Response.ok('Hello world')
        ..contentType = ContentType.TEXT;
    });
    
    사용 방법 등급 연결, 우리는 contentType 속성을 text/plain으로 설정할 수 있습니다.ContentType 유틸리티에는 Dart 가 있는 inbuilt이 있으며 다음 스타일로 사용할 수 있습니다.
    new ContentType(primaryType, subType, {String charset, Map parameters});
    
    이것은 이미 HTML, JSON 및 텍스트에 상수를 제공했기 때문에 대부분의 경우 이 상수만 사용해야 합니다.
    현재 프로세스를 종료하고 aqueduct serve을 다시 실행하여 서버를 다시 시작합니다.이제 루트 경로에 액세스하면 다음과 같은 정보가 제공됩니다.

    끝날 때까지 응용 프로그램의 실례를 우리가 가지고 있는 핵심 수량으로 확장합시다.상자/주 파이프에 있습니다.dart는 현재 적용 시 2로 설정되어 있습니다.시작 시간:
    await app.start(numberOfInstances: 2);
    
    이 문제를 해결하기 위해서, 우리는 "Dart:io"라이브러리에서 Dart의 Platform 클래스를 가져오고main을 수정할 것입니다.dart는 다음과 같습니다.
    import 'dart:io' show Platform;
    
    Future main() async {
      ...
      ...
      await app.start(numberOfInstances: Platform.numberOfProcessors);
      ...
    }
    

    VS 코드의 개발 기술👈


    우선, Dart 코드에 따라 Dart 확장을 설치하여 Dart와 진동 지원을 활성화해야 한다.
    다음 설정을 사용하여 Dart에 시작 구성을 추가합니다.
    {
      "name": "Dart",
      "type": "dart",
      "request": "launch",
      "program": "${workspaceFolder}/bin/main.dart"
    }
    
    이렇게 하면 VS 코드를 통해 응용 프로그램을 실행할 수 있고 디버깅을 돕기 위해 인터럽트를 추가할 수 있습니다.

    끝나기 전에 질문 하나 할게요. 이 시리즈의 마지막에 무엇을 얻고 싶으세요?아래에 댓글을 달아서 알려 주세요. 감사합니다.
    이 시리즈의 첫 번째 부분은 여기서 끝냅니다.이 시리즈의 코드는 available on github입니다. 우리는 이 시리즈를 읽을 때 업데이트할 것입니다.더 많은 관심을 가져주세요.

    한층 더 읽다

  • Aqueduct documentation
  • Getting started with Pub



  • 최초 발표 Medium

    좋은 웹페이지 즐겨찾기