Dartを使用してRESTful APIを数分で作成する





翻訳者のメモ:素晴らしいDartプログラミング言語を見るもう1つの理由を読者に伝えたいと思います。今回は、RESTful APIをすばやく簡単に作成する方法についてお話します。 知らない人のために、 これはそれが何であるかを明確に説明しています。

そして、知っている人のために、猫へようこそ。



どこから始めるか



パブにはRPCと呼ばれる素晴らしいライブラリがあります。 これは、DartでサーバーRESTful APIを構築するための軽量パッケージです。 そして、それは私たちが必要とするすべてです。



pubspec.yamlのプロジェクトに依存関係を追加することから始めましょう。



dependencies: rpc: "^0.5.5"
      
      





次に、pub getを呼び出してパッケージをプロジェクトにロードします。

これでインポートできます。



 import 'package:rpc/rpc.dart';
      
      







APIクラスを作成する



APIを含むAPIクラスを作成する必要があります。 これは、RPCライブラリの特別なアノテーション@ApiClassを持つDartクラスです。 注釈には1つの必須パラメーターがあります-versionは、提供されるAPIのバージョンを意味します。 たとえば、v1。 APIの名前を変更できるように、名前などの他のパラメーターを追加することもできます。



 @ApiClass(version: 'v1') class MyApi { //     }
      
      





APIメソッド



GET、POST、DELETEなどを実行する機能を提供したい お問い合わせ。 私たちは皆、特別な注釈を付けたAPIクラスを作成しました。 メソッドはAPIクラスに直接配置するか、APIリソースを使用できます。



教室の方法



ここでは、動物用のGETメソッドと動物用のPOSTメソッドを作成します。 各メソッドには、メソッドを呼び出すためのパスを示す必須のパスパラメーターを含む@ApiMethodアノテーションが必要です。 メソッドのタイプ(GET、POSTなど)を示すパラメーターを指定することもできます。 このパラメーターが指定されていない場合、デフォルトでGETが設定されます。



 @ApiClass(version: 'v1') class MyApi { List _animals = []; @ApiMethod(path: 'animals') List<Animal> getAnimals() => _animals; @ApiMethod(path: 'animals', method: 'POST') Animal postAnimal(Animal animal) { _animals.add(animal); return animal; } }
      
      





ここでは、リストを使用して動物を保存します。 また、2つのメソッドを提供します。getAnimals()はすべての動物のリストを返し、postAnimalは動物リストに新しい動物のエントリを追加します。 当然、この例を他のAPIメソッドで拡張できます。



これが機能するには、Animalクラスが必要です。

 class Animal { int id; String name; int numberOfLegs; }
      
      





APIリソース



通常、特定のAPIメソッドを提供するリソースにAPIを分割します。 たとえば、動物用のAPI用と人用のAPI用に1つのリソースが必要です。 RPCライブラリを使用すると、これを簡単に行うことができます。



リソースクラスを作成し、リソースに関連付けられているすべてのメソッドをそこに移動します。

 class AnimalResource { List _animals = []; @ApiMethod(path: 'animals') List<Animal> getAnimals() => _animals; @ApiMethod(path: 'animals', method: 'POST') Animal postAnimal(Animal animal) { _animals.add(animal); return animal; } }
      
      





次に、APIクラスにAnimalResourceのインスタンスを作成します。このクラスには@ApiResourceアノテーションがあります。

 @ApiClass(version: 'v1') class MyApi { @ApiResource() AnimalResource resource = new AnimalResource(); }
      
      





テストAPI



APIを使用またはテストするには、binフォルダーにサーバースクリプトを作成する必要があります。 ここでApiServerを作成し、そこにAPIを追加して、localhost:8080をリッスンするHttpServerを作成する必要があります。

 library my_server; import 'dart:io'; import 'package:logging/logging.dart'; import 'package:rpc/rpc.dart'; import '../lib/server/api.dart'; final ApiServer apiServer = new ApiServer(prettyPrint: true); main() async { Logger.root..level = Level.INFO..onRecord.listen(print); apiServer.addApi(new MyApi()); HttpServer server = await HttpServer.bind(InternetAddress.ANY_IP_V4, 8080); server.listen(apiServer.httpRequestHandler); print('Server listening on http://${server.address.host}: ${server.port}'); }
      
      





サーバーを起動するDartスクリプトをbinで実行します。 これで、APIがlocalhost:8080 / myApi / v1で利用可能になりました。 動物のリストを取得する場合は、localhost:8080 / myApi / v1 / animalsのGETリクエストを作成します。 または、同じlocalhostアドレス8080 / myApi / v1 / animalsにPOSTリクエストを行うことでエントリを追加できます。



POSTリクエストのテストはもう少し難しいです。なぜなら、 これを行うには、ChromeなどのツールまたはChrome PostmanまたはAdvanced RESTクライアントの拡張機能をインストールします。



それだけです、サーバーAPIはほんの数分で作成されました。



All Articles