![](https://habrastorage.org/files/e15/6b5/bd2/e156b5bd2f6047d1b4e8cbe21c34ce3e.jpg)
翻訳者のメモ:素晴らしい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はほんの数分で作成されました。